如何在python列表中包装每个元素?

时间:2014-04-22 08:24:15

标签: python

例如我有这样的数组:

['1', '2', '3', '4']

我需要像这样包装它:

{'profile': '1', 'profile': '2', 'profile': '3', 'profile': '4'}

尝试过这样的事情,但没有运气:

result = ['1', '2', '3', '4']
result = {'profile': v for v in result}

4 个答案:

答案 0 :(得分:2)

构造

{'profile': '1', 'profile': '2', 'profile': '3', 'profile': '4'}

与Python等效于

{'profile': '4'}

因为,如上所述,字典不能包含重复的键。因此,字典可能不是您正在寻找的

您可以使用 list comprehension ,如

 >>> [('profile', x) for x in a]
 [('profile', '1'), ('profile', '2'), ('profile', '3'), ('profile', '4')]

答案 1 :(得分:0)

字典不是您要查找的结构,因为它们不接受重复键。

执行result = {'profile': v for v in result}时,每次迭代都会覆盖result['profile']

答案 2 :(得分:0)

您无法制作包含重复键的字典。但是你可以列出元组列表。使用列表推导。见https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions

    [('profile', i) for i in ['1','2','3','4']]

结果

    [('profile', '1'), ('profile', '2'), ('profile', '3'), ('profile', '4')]

答案 3 :(得分:0)

您可以使用map()将函数应用于列表的每个元素。但是,正如霜冻评论,你不能在字典中有重复的键。如果你想为每个元素都有一个字典,你可以这样做(之后,你可以从列表中提取每个字典):

>>> def wrap(x): return {"profile": x} 
>>> map(wrap, range(1,10))
[{'profile': 1}, {'profile': 2}, {'profile': 3}, {'profile': 4}, {'profile': 5},
{'profile': 6}, {'profile': 7}, {'profile': 8}, {'profile': 9}]