我有这个清单:
[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',.........}
我如何实现这一点......感谢任何帮助
答案 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)