2013-05-12 5 views
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)) 

Как вы могли догадаться, это не фактические данные, но это метод я использую в моей программе, я вывешу реальные Dict и список, если это необходимо.

Я хочу, чтобы new_dict соответствовал порядку элементов, как описано выше. Как мы можем достичь этого?

+0

'dict's нет упорядоченности – jamylak

+0

Они, конечно, есть некоторые за упорядочением сцены, потому что результат всегда одинаков, но полностью перемешаны. –

+0

Да, но упорядочение за кулисами (псевдо) тоже рандомизировано – jamylak

ответ

2

Вы можете использовать OrderedDict, обычные словари (dict) являются неупорядоченными.

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]}