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)]=…
——可能不是他的意思,但这就是他写的。