根据其他列表中的值将列表映射到字典

时间:2013-08-10 23:20:37

标签: python list

我有这个清单:

[0,0,3,3,0,1,1,1,3,3,0,2,0,2,0,0,2,2]

和此列表:

[18,23,56,34,23,67,89,43,12,22,34,21,54,23,67,12,45,67]

(它们的长度是相同的)..我想找到一种方法从这些列表中生成一个字典,使用dict中的键作为第一个列表中的值,并将每个键的值作为数字第二个列表对应第一个列表的位置..

结果将是:

dict = {'0': '18,23,23,34,54,67,12', '1':'67,89,43',.........} 

我如何实现这一点......感谢任何帮助

1 个答案:

答案 0 :(得分:5)

你可以这样做:

>>> list1 = [0,0,3,3,0,1,1,1,3,3,0,2,0,2,0,0,2,2]
>>> list2 = [18,23,56,34,23,67,89,43,12,22,34,21,54,23,67,12,45,67]
>>> import collections
>>> result = collections.defaultdict(list)
>>> for i, j in zip(list1, list2):
...     result[i].append(j)
...
>>> result
defaultdict(<type 'list'>, {0: [18, 23, 23, 34, 54, 67, 12], 1: [67, 89, 43], 2: [21, 23, 45, 67], 3: [56, 34, 12, 22]})
>>> result[0]
[18, 23, 23, 34, 54, 67, 12]
>>> result[1]
[67, 89, 43]

要获得问题中描述的数据结构,您可以执行以下操作:

>>> for key, values in result.items():
...     result[str(key)] = ','.join(str(v) for v in values)