2014-10-10 146 views
0

如何使用预先存在的字典并使用for循环将列表中的项目作为元组添加到字典中?下面我做了这个例子。我想采取color_dict并重新格式化,以便每个项目的格式为'R':['red',1]使用嵌套数组创建字典

我得到了以下,但后来不知道如何做最后一部分。

lista = {'red':'R', 'orange':'O', 'yellow':'Y', 'green':'G', 
     'blue':'B', 'indigo':'I', 'violet':'V'} 
color_dict = {'R':1, 'O':2, 'Y':3, 'G':4, 'B':5, 'I':6, 'V':7} 

a = color_dict.keys() 
color_keys = [] 
color_vals = [] 

for x in lista[0::2]: 
    color_keys.append(x) 
for x in lista[1::2]: 
    color_vals.append(x) 

new = zip(color_keys, color_vals) 
new_dict = dict(new) 
print new_dict 

如果任何人有任何其他的建议,这将是伟大的,我不理解如何使用词典理解。

+0

你得到的错误:

您可以使用字典理解建立这个?我在'for'循环中用'lista'得到'KeyError's,但在它的位置使用'a'会产生一些输出。 – icedwater 2014-10-10 01:55:05

+0

直到我写的观点,我没有得到任何错误。但是,我无法弄清楚如何从一本字典中添加项目到另一本字典。 – bk4488 2014-10-10 01:56:56

回答

1

基本上你想要做的是通过项目环在lista以及对于每一对color: colkey找到color_dict相应的值(由colkey索引)。然后,您只需将所有内容缝合在一起:​​是lista字典中每个项目的新字典中的新项目。同时运行代码

>>> new_dict = {colkey: [color, color_dict[colkey]] for color, colkey in lista.items()} 
>>> new_dict 
{'O': ['orange', 2], 'Y': ['yellow', 3], 'V': ['violet', 7], 'R': ['red', 1], 'G': ['green', 4], 'B': ['blue', 5], 'I': ['indigo', 6]} 
+0

对不起,我没有关注我如何做到这一点。 – bk4488 2014-10-10 02:14:12

+0

这是一个很好的答案,非常简单。我强烈建议通过它,直到你知道它为什么会起作用,你将学到很多关于python的知识! – 2014-10-10 02:23:03

+0

我不明白什么是我的colkey项目。你能向我解释那是指什么? – bk4488 2014-10-10 02:49:36