Python 有没有一种更优雅的方法可以将字典中的键和值解压成两个列表,而不丢失一致性?

Python 有没有一种更优雅的方法可以将字典中的键和值解压成两个列表,而不丢失一致性?,python,list,dictionary,iterable-unpacking,Python,List,Dictionary,Iterable Unpacking,我想到的是: keys, values = zip(*[(key, value) for (key, value) in my_dict.iteritems()]) 但我并不满意。pythonistas怎么说?如何使用和 你的意思是:keys,values=dict.keys(),dict.values()?这是有效的,因为与dict的合同之一是,只要dict的大小不变,dict中的键和值的顺序就会相应。@Constantinius:这真的很优雅,谢谢@伊格纳西奥:非常感谢!这正是我所希望的启

我想到的是:

keys, values = zip(*[(key, value) for (key, value) in my_dict.iteritems()])
但我并不满意。pythonistas怎么说?

如何使用和


你的意思是:
keys,values=dict.keys(),dict.values()
?这是有效的,因为与
dict
的合同之一是,只要dict的大小不变,dict中的键和值的顺序就会相应。@Constantinius:这真的很优雅,谢谢@伊格纳西奥:非常感谢!这正是我所希望的启发,也消除了我对这两个列表的一致性的担忧,我的意思是排序。警告:我很确定这不是线程安全的(如果这对您很重要的话)。由于dict.keys()是与dict.values()分开调用的,因此有可能出现竞争条件,在这些调用之间修改dict。解包dict.items()在这里更安全,因为它是一个函数调用,不可能返回不同数量的键和值。@RohitTaneja:在Python 3中是的,在Python 2中是的(我在编写此答案时就想到了这一点)两个返回列表。顺便说一句,您的列表理解应该敲响警钟,因为它不做任何事情——没有要筛选的
if
子句,也没有映射的函数。
键和
值将是元组。。。之后需要转换为列表
keys, values = my_dict.keys(), my_dict.values()
keys, values = zip(*d.items())