【发布时间】:2019-07-31 12:10:55
【问题描述】:
我正在使用列表推导来创建字典。 Iterable 是在两个单独的列表上使用 zip 函数创建的。如果使用 print 函数检查这个 zip 对象的列表,然后创建字典,它会生成一个空字典。而如果未打印此 zip 元素的列表,则会按预期创建字典。 请解释为什么会这样。
drinks = ["espresso", "chai", "decaf", "drip"]
caffeine = [64, 40, 0, 120]
zipped_drinks = zip(drinks, caffeine)
print(list(zipped_drinks))
drinks_to_caffeine = {key:value for key,value in zipped_drinks}
print(drinks_to_caffeine)
这会产生:- [('espresso', 64), ('chai', 40), ('decaf', 0), ('drip', 120)] {}
如果“print(list(zipped_drinks))”被删除,输出是:- {'espresso': 64, 'chai': 40, 'decaf': 0, 'drip': 120}
【问题讨论】:
-
您应该知道包含
list(zipped_drinks)时会发生这种情况。它不仅用于打印,而且 dict 本身也发生了变化。 (并且将只保留键)
标签: python-3.x list dictionary zip