0

我有一个dict对象和一个list包含列表,并且想将 dict 的键与列表中的列表结合起来,但是结果总是以(预定的)混乱的形式出现。

my_dict = {(255,0,0):'red', (0,255,0):'green', (0,0,255):'blue'}
my_list = [[1,2,3], [4,5,6], [7,8,9]]

new_dict = dict(zip(my_dict, mylist))

正如您可能猜到的,这不是实际数据,而是我在程序中使用的方法,如果有必要,我会发布真正的字典和列表。

我想要的是 new_dict 与上述项目的顺序一致。我们怎样才能做到这一点?

4

2 回答 2

2

dict is inherently unordered. To preserve the ordering, use collections.OrderedDict.

于 2013-05-12T07:26:50.450 回答
2

You can use an OrderedDict, ordinary dictionaries (dict) are unordered.

from collections import OrderedDict

my_dict = OrderedDict([((255,0,0),'red'), ((0,255,0),'green'), ((0,0,255),'blue')]) #[(key,val),(key2,val2),..]
my_list = [[1,2,3], [4,5,6], [7,8,9]]

new_dict = dict(zip(my_dict, my_list))
print(new_dict)

>>> 
{(0, 0, 255): [7, 8, 9], (0, 255, 0): [4, 5, 6], (255, 0, 0): [1, 2, 3]}
于 2013-05-12T07:27:03.280 回答