我需要将这两个列表合并到 python
I need to merge these two lists together in python
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']]
编辑:只是为了澄清问题以供将来参考。已经有人回答了。
您可以使用集合中的 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']]
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']]
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']]
编辑:只是为了澄清问题以供将来参考。已经有人回答了。
您可以使用集合中的 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']]
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']]