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

Python 根据其他列表中的值将列表映射到字典,python,list,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] 以下是: [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

我有以下清单:

[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]
以下是:

[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',.........} 
我如何实现这一点..非常感谢您的帮助

您可以:

>>> 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)
你可以做:

>>> 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)

我不确定我是否理解“与第一个列表位置对应的第二个列表的编号”的含义。你能澄清一下吗?
zip
defaultdict
的组合应该help@soulcheck他得到了答案,但我觉得这个问题的信息仍然不足。以前的名单有多少?实际上,在输出
dict
中只有一个,或者每个键一个?例如,18属于键0,因为在列表中,它们位于同一位置。我不确定我是否理解“与第一个列表位置相对应的第二个列表的编号”的含义。你能澄清一下吗?
zip
defaultdict
的组合应该help@soulcheck他得到了答案,但我觉得这个问题的信息仍然不足。以前的名单有多少?实际上,在输出中只有一个键,或者每个键一个。例如,18属于键0,因为在列表中它们处于相同的位置可能甚至是
result[str(key)]=…
——可能不是他的意思,但这是他写的。可能甚至是
result[str(key)]=…
——可能不是他的意思,但这就是他写的。