为什么此行使用list(Counts.Items()):而不是dict(Counts.Item()):?

brc7rcf0  于 2022-10-02  发布在  Python
关注(0)|答案(2)|浏览(304)

键-值对现在不是存储在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)```
2nc8po8w

2nc8po8w1#

counts.items()为您提供了一个迭代器,它由具有Map到其值的键的元组组成。在这里,实际上不需要在列表中打包,因为顾名思义,返回的Iterable已经是可迭代的。

所以,是的,您正在迭代字典,但是通过使用Counts.Items(),您可以避免一次又一次地调用counts[key],这会导致额外的计算,而调用items()已经可以获得所有可用的东西。

4dbbbstv

4dbbbstv2#

您不能在这里将dict(counts.items())解压为key, val,因为迭代dict只会产生键,而不是键和值。

相关问题