我正在尝试使用Python将list
转换为dictionary
,我需要帮助提出一个简单的解决方案。我想要转换的列表如下所示:
inv = ['apples', 2, 'oranges', 3, 'limes', 10, 'bananas', 7, 'grapes', 4]
我想从此dictionary
创建一个list
,其中偶数位置的项目(苹果,橙子,酸橙,香蕉,葡萄)是keys
,以及项目在奇数位置(2,3,10,7,4)是values
。
inv_dict = {'apples':2, 'oranges':3, 'limes':10, 'bananas':7, 'grapes':4}
我尝试使用类似enumerate
的内容来计算项目的位置,然后如果它是偶数,则将其设置为key
。但是,我不确定如何将以下数字与其正确的项目相匹配。
答案 0 :(得分:13)
最短路:
dict(zip(inv[::2], inv[1::2]))
答案 1 :(得分:1)
关键是在结果列表对上使用pairwise iteration并调用dict()
构造函数,这将使用第一项作为键创建字典,第二项作为值:
iterable中的每个项目本身必须是一个只有两个的可迭代项 对象。每个项目的第一个对象成为新项目的关键 字典,第二个对象是相应的值。
样品:
>>> inv = ['apples', 2, 'oranges', 3, 'limes', 10, 'bananas', 7, 'grapes', 4]
>>> dict(pairwise(inv))
{'grapes': 4, 'bananas': 7, 'apples': 2, 'oranges': 3, 'limes': 10}
其中pairwise()
函数取自this answer:
from itertools import izip
def pairwise(iterable):
a = iter(iterable)
return izip(a, a)
答案 2 :(得分:1)
使用org.junit.Assert
的另一个选项:
zip
或者@DSM建议:
dict([(x, y) for x, y in zip(inv[::2], inv[1::2])])
# {'apples': 2, 'bananas': 7, 'grapes': 4, 'limes': 10, 'oranges': 3}