从列表中用Python中的有序字典中的列表压缩项目
问题描述:
我有一个给定的有序字典和一个给定的列表具有相同的长度。从列表中用Python中的有序字典中的列表压缩项目
given_dict = OrderedDict([('one', ['-', '-']), ('two', ['-', '-'])])
given_list = ['a', 'b']
现在我想从列表中压缩的每个项目从字典中的每个列表来得到这样的:
new_dict = {'one': ['-', '-', 'a'], 'two': ['-', '-', 'b']}
任何想法?
答
制作一个循环ove given_dict.items()
并添加您的值的given_list
的元素!
>>> given_dict = OrderedDict((j[0],j[1]+[given_list[i]]) for i,j in enumerate(given_dict.items()))
>>> given_dict
OrderedDict([('one', ['-', '-', 'a']), ('two', ['-', '-', 'b'])])
,或者如果你想给一个字典,只需要使用dict
代替``
>>> given_dict = dict((j[0],j[1]+[given_list[i]]) for i,j in enumerate(given_dict.items()))
>>> given_dict
{'two': ['-', '-', 'b'], 'one': ['-', '-', 'a']}
答
这里有一种方法:
In [13]: given_dict = OrderedDict([('one', ['-', '-']), ('two', ['-', '-'])])
In [14]: given_list = ['a', 'b']
In [15]: {k: di + [li] for ((k, di), li) in zip(given_dict.items(), given_list)}
Out[15]: {'one': ['-', '-', 'a'], 'two': ['-', '-', 'b']}
答
在这里你去:
>>> given_dict = collections.OrderedDict([('one', ['-', '-']), ('two', ['-', '-'])])
>>> given_list = ['a', 'b']
>>> {x[0]:x[1]+[given_list[i]] for i,x in enumerate(given_dict.items())}
{'one': ['-', '-', 'a'], 'two': ['-', '-', 'b']}
这里有一些错误,首先,不要使用'dict'或'list'作为名字,他们是Python内置函数的影子名称。此外,字典需要像'{'key':'value'}',** NOT **'{'key'='value'}'。然后,Python字典是** UNORDERED **这意味着使用** zip **根本没有意义 – Anzel
@Anzel我修改了我的帖子。我希望现在更清楚。感谢您的建议。 – ericMTR