d.items()返回字典中的所有键值对信息,返回结果是Python的一种内部数据类型dict_items。如果希望更好的使用返回结果,可以将其转换为列表类型,键值对以元组类型(即括号形式)表示。
>>> d = {"2018":"小明","2019":"小红","2020":"小白"}
>>> d.items()
dict_items([('2018', '小明'), ('2019', '小红'), ('2020', '小白')])
>>> type(d.items())
<class 'dict_items'>
>>> list(d.items())
[('2018', '小明'), ('2019', '小红'), ('2020', '小白')]
>>>
补充此条的目的是为了解答我做一道二级题目时候的疑惑:
fi = open("小女孩.txt","r")
fo = open("小女孩频次排序.txt","w")
txt = fi.read()
d = {}
for word in txt:
d[word] = d.get(word,0)+1
del d[" "]#不能有空格
del d["\n"]#不能有换行符
ls = list(d.items())
ls.sort(key = lambda x:x[1],reverse = True)
for i in range(len(ls)):
ls[i] = "{}:{}".format(ls[i][0],ls[i][1])
fo.write(",".join(ls))
fi.close()
fo.close()
此处ls.sort()排序一行既然已经把列表降次排序了,为什么还要再写一个for循环把列表重写一遍呢?
当然是因为这两种情况下的ls长的不一样啦!
ls.sort()排序完之后的ls大概是长这样子滴:
[('小', 100), ('女', 99), ('孩', 98)]
而for循环重写ls之后的ls是长这样子滴:
['小':100, '女': 99, '孩': 98]
重写之后的ls看起来字符频次排序的意味更加强烈,也更符合题目要求。
总结:
d.items()或者list(d.items())返回的是以元组类型表示的键值对,
且键值之间用的是逗号而不是分号,
且键值之间用的是逗号而不是分号,
且键值之间用的是逗号而不是分号,
这就是为什么要把ls再用for循环重写一遍的原因。