使用Python中的有序字典列表从列表中压缩项目

时间:2014-12-30 20:17:01

标签: python list dictionary zip items

我有一个给定的有序字典和一个长度相同的给定列表。

given_dict = OrderedDict([('one', ['-', '-']), ('two', ['-', '-'])])
given_list = ['a', 'b']

现在我想从列表中压缩每个项目以及字典中的每个列表来获取:

new_dict = {'one': ['-', '-', 'a'], 'two': ['-', '-', 'b']}

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这是一种方式:

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

答案 1 :(得分:1)

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,只需使用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']}

答案 2 :(得分:0)

你去:

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