键-值对现在不是存储在dict()中吗?
为什么代码要通过列表,而不是字典?
import string
fhand = open('romeo-full.txt')
counts = dict()
for line in fhand:
line = line.translate(str.maketrans('', '', string.punctuation))
line = line.lower()
words = line.split()
for word in words:
if word not in counts:
counts[word] = 1
else:
counts[word] += 1
# Sort the dictionary by value
lst = list()
for key, val in list(counts.items()): # <----- This is the line
lst.append((val, key))
lst.sort(reverse=True)
for key, val in lst[:10]:
print(key, val)```
2条答案
按热度按时间2nc8po8w1#
counts.items()
为您提供了一个迭代器,它由具有Map到其值的键的元组组成。在这里,实际上不需要在列表中打包,因为顾名思义,返回的Iterable已经是可迭代的。所以,是的,您正在迭代字典,但是通过使用Counts.Items(),您可以避免一次又一次地调用
counts[key]
,这会导致额外的计算,而调用items()
已经可以获得所有可用的东西。4dbbbstv2#
您不能在这里将
dict(counts.items())
解压为key, val
,因为迭代dict
只会产生键,而不是键和值。