【发布时间】:2013-03-26 21:24:07
【问题描述】:
所以我的目标是:
fruitColourMapping = [{'apple': 'red'}, {'banana': 'yellow'}]
到
finalMap = {'apple': 'red', 'banana': 'yellow'}
我得到的一个方法是:
from itertools import chain
fruits = list(chain.from_iterable([d.keys() for d in fruitColourMapping]))
colour = list(chain.from_iterable([d.values() for d in fruitColourMapping]))
return dict(zip(fruits, colour))
还有更好的pythonic方式吗?
【问题讨论】:
-
仅供参考,你真的不想这样做。字典本质上是无序的,因此迭代字典两次(就像构建
fruit和color列表一样)以正确的顺序生成两组值只是运气问题。 -
@sr2222 不正确。文档explicitly states 指出,如果您在不同时改变字典的情况下迭代键和值,则可以保证顺序一致。
-
@DanielRoseman 这仍然不是一个好习惯。如果这成为一个问题,它将不是线程安全的,并且仅仅因为某些东西实现了与字典相同的接口并不意味着它在这些细节上的行为与字典完全一样。这是一种可以正常工作直到不能正常工作的东西,然后你会变得难以追踪错误。这很容易避免,所以您不妨这样做。
标签: python dictionary