我需要在python中将这两个列表合并在一起

时间:2019-11-29 13:49:22

标签: python python-3.x list spyder

listA = [['a','1'],['e','5'],['i','3'],['o','7'],['u','3']]
listB = [['a','6'],['b','3'],['c','4'],['d','1'],['e','2']]

现在,这些列表表示项目计数。而且我想合并这两个列表,以便我也可以看到另一个列表中每个项目的计数。

如果一个项目存在于一个列表中而不存在于另一个列表中,则我想将其声明为“ 0”而不是null。如下图所示:

output = [['a','1','6'],['e','5','2'],['i','3','0'],['o','7','0'],
      ['u','3','0'],['b','0','3'],['c','0','4'],['d','0','1']]

编辑:仅是为了阐明问题以供将来参考。已经回答了。

2 个答案:

答案 0 :(得分:2)

您可以使用集合中的defaultdict。 像这样:

>>> from collections import defaultdict
>>> output = defaultdict(list)

>>> for k,v in dict(listA).items():
...     output[k].append(v)
...
>>> output
defaultdict(<class 'list'>, {'a': ['1'], 'e': ['5'], 'i': ['3'], 'o': ['7'], 'u': ['3']})

>>> for k,v in dict(listB).items():
...     output[k].append(v)
...
>>> output
defaultdict(<class 'list'>, {'a': ['1', '6'], 'e': ['5', '2'], 'i': ['3'], 'o': ['7'], 'u': ['3'], 'b': ['3'], 'c': ['4'], 'd': ['1']})

>>> [[k,*v] for k,v in output.items()]
[['a', '1', '6'], ['e', '5', '2'], ['i', '3'], ['o', '7'], ['u', '3'], ['b', '3'], ['c', '4'], ['d', '1']]

答案 1 :(得分:2)

listA = [['a','1'],['e','5'],['i','3'],['o','7'],['u','3']]
listB = [['a','6'],['b','3'],['c','4'],['d','1'],['e','2']]

dictA = dict(listA)
dictB = dict(listB)

result = []

for key, value in listA:
  result.append([key, value, dictB.get(key, '0')])

for key, value in listB:
  if key not in dictA:
    result.append([key, '0', value])

print(result)
# [['a', '1', '6'], ['e', '5', '2'], ['i', '3', '0'], ['o', '7', '0'], ['u', '3', '0'], ['b', '0', '3'], ['c', '0', '4'], ['d', '0', '1']]