2014-09-19 56 views
1

,比如我有字典蟒蛇Python的添加顺序值阵列与dict

dict = {'a': '1', 'b': '2', 'c': '3'} 

和阵列

arr = ['4', '5', '6'] 

我想补充一个连续值数组与dict

dict1 = {'a': '4', 'b': '5', 'c': '6'} 

请建议一具体解决方案

+4

请不要命名变量'dict' – dawg 2014-09-19 04:40:36

+0

只是按键映射准确以价值:D – user3171689 2014-09-19 04:46:00

+0

你依靠的字典具有特定的顺序的关键。口号是无序的;他们不保证他们的条目将以什么顺序出现。 – user2357112 2014-09-19 04:55:46

回答

3

您可以使用zip

>>> import string 
>>> arr = ['4', '5', '6'] 
>>> # dict(zip(sorted(original_dict), arr)) 
>>> dict(zip(string.ascii_lowercase, arr)) 
{'b': '5', 'c': '6', 'a': '4'} 

BTW,不命名一个varialbe dict。它会阴影内置类型/功能dict

4
>>> d = {'a': '1', 'b': '2', 'c': '3'} 
>>> arr = ['4', '5', '6'] 
>>> dict(zip(sorted(d), arr)) 
{'a': '4', 'c': '6', 'b': '5'} 
+1

'keys()'不是必需的,因为迭代字典会产生键:'dict(zip(sorted(d),arr))' – falsetru 2014-09-19 04:42:26

+6

如果海报不改变他的变量的名字,已经屏蔽了'dict'功能! – dawg 2014-09-19 04:42:55

+0

感谢,falestru,不知道那 – vil 2014-09-19 04:43:31

1

不知道你在做什么,但下面的代码片段做你打算在你的问题。

import os 
dict = {'a': '1', 'b': '2', 'c': '3'} 
arr = ['4', '5', '6'] 

dict1 = {} 
dictAsList = dict.items() 
i = 0 
for key in sorted(dict): 
    try: 
     dict1[key] = arr[i] 
    except: 
     pass 
    i = i+1 
print dict1 
+0

'iterkeys()'不是必需的。 'sort(dict)'就足够了。 – falsetru 2014-09-19 04:52:59

+0

@falsetru没错。谢谢 :) – kundan 2014-09-19 04:55:22

0

Python字典没有顺序。所以我没有得到字典中的顺序手段。

如果你只是想将所有的值设置为另一个值,你可以这样做。

d = {'a': '1', 'b': '2', 'c': '3'} 
arr = ['4', '5', '6'] 
print dict(zip(d.keys(), arr)) 
#{'a': '4', 'c': '5', 'b': '6'} 

如果你想设置的值,你可以做这样的顺序相同。(你需要改变你的数据结构)

from collections import OrderedDict 

d = OrderedDict([('a', '1'), ('b', '2'), ('c', '3')]) 
arr = ['4', '5', '6'] 
print dict(zip(d.keys(), arr)) 
#{'a': '4', 'c': '6', 'b': '5'}