2014-10-08 2 views
0

Пусть у меня есть этот упорядоченный словарь:Вставка значения в orderict по индексу?

import collections 

d = collections.OrderedDict([('a', None), ('b', None), ('c', None)]) 

И у меня есть эти значения в списке:

lst = [10, 5, 50] 

Теперь, когда я итерацию по списку, я хотел бы, чтобы вставить его значение в словаре d по этому списку. Так что в основном, мне нужен порядок, я просто не знаю, как вставить (если это возможно) в словаре по индексу, а не путем указания ключа.

Так, например (с псевдо-код здесь):

for i in range(len(lst)): 
    d.index(i) = lst[i] #this is pseudo code, so there might not be such methods etc. 
+0

'help (d)' .....? –

+0

Чтобы обновить значение в произвольной позиции, 'd [d.keys() [i]] = ...'. – georg

ответ

2

Используйте zip() перебрать и словаря ключей и значений из списка и назначить значения:

>>> d = collections.OrderedDict([('a', None), ('b', None), ('c', None)]) 
>>> lst = [10, 5, 50] 
>>> for k, val in zip(d, lst): 
     d[k] = val 
...  
>>> d 
OrderedDict([('a', 10), ('b', 5), ('c', 50)]) 

И если вы уже знаете, ключи вместо первоначальной инициализации dict и затем присвоение им значений могут быть заменены на:

>>> keys = ['a', 'b', 'c'] 
>>> lst = [10, 5, 50] 
>>> collections.OrderedDict(zip(keys, lst)) 
OrderedDict([('a', 10), ('b', 5), ('c', 50)]) 
+0

Спасибо, это аккуратно. – Andrius