给定一个由简单字典组成的扁平列表
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
正如预期。我假设所有方法都按照预期工作(除非是用户个人误操作),但是为什么使用列表推导式不起作用呢?有人能给我解释一下吗?
编辑:我使用的是Python 3,我知道items()会产生一个dict_view,但我不明白为什么这个逻辑不起作用。
x.items()
,它将返回三个列表,其中包含两个元组(键和值)。如果x.items()
是礼物,则必须解包另一层礼品包装纸。在您的列表推导式中尝试使用x.items()[0]
! - offeltoffel