gpt4 book ai didi

python - 迭代字典列表和解包

转载 作者:太空狗 更新时间:2023-10-29 17:31:49 25 4
gpt4 key购买 nike

给定一个简单字典的平面列表

lst = [{'key1': 1}, {'key2': 2}, {'key3': 3}]

我想找到产生最小值的字典,该值使用此处未详述的方法进行评估。我的第一个想法是迭代列表以逐字逐句地检查字典,但这失败了:

for k, v in [x.items() for x in lst]:
print(k, v)

结果 ValueError(以及使用生成器而不是列表):

for k, v in [x.items() for x in lst]:
ValueError: not enough values to unpack (expected 2, got 1)

但是,

for x in lst:
for k, v in x.items():
print(k, v)

产量

key1 1
key2 2
key3 3

正如预期的那样。我假设所有方法都按预期工作(除非 PEBKAC),但为什么它不能使用列表理解?有没有大佬解惑一下?

编辑:我使用 python 3,我知道 items() 会产生一个 dict_view 但我不明白为什么逻辑不起作用。

最佳答案

您缺少一个迭代级别。

通常,字典有多个键/值对。 dict.items() 将整个字典转换为 (key, value) 形式的元组序列。在您的情况下,每个字典只有一个项目,但 items() 的结果仍然是元组的元组。

如果打印 [x.items() for x in lst] 的结果,您会看到结果是 dict_view 项目的列表;其中每一个本身都可以迭代。

关于python - 迭代字典列表和解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46345845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com