Python 按键组合两个元组列表

Python 按键组合两个元组列表,python,list,tuples,Python,List,Tuples,我有两个两元素元组的列表。元组的第一个元素是ID,第二个元素是某种值。值的类型取决于列表 lst1 = [ ('a', 1), ('b', 2), ('c', 3) ] lst2 = [ ('b', 5), ('a', 4), ('c', 6) ] 将它们组合为以下内容的最简单方法是什么: lst3 = [ ('a', 1, 4), ('b', 2, 5), ('c', 3, 6)] 我建议你先把那些元组列表变成字典。然后,假设两个列表包含相同的“键”,您可以使用简单的列表理解从两个字典中

我有两个两元素元组的列表。元组的第一个元素是ID,第二个元素是某种值。值的类型取决于列表

lst1 = [ ('a', 1), ('b', 2), ('c', 3) ]
lst2 = [ ('b', 5), ('a', 4), ('c', 6) ] 
将它们组合为以下内容的最简单方法是什么:

lst3 = [ ('a', 1, 4), ('b', 2, 5), ('c', 3, 6)]

我建议你先把那些元组列表变成字典。然后,假设两个列表包含相同的“键”,您可以使用简单的列表理解从两个字典中获取相应的值

lst1 = [ ('a', 1), ('b', 2), ('c', 3) ]
lst2 = [ ('b', 5), ('a', 4), ('c', 6) ] 
dict1 = dict(lst1)
dict2 = dict(lst2)
lst3 = [(k, dict1[k], dict2[k]) for k in sorted(dict1)]
请注意,字典没有固定的顺序。如果要保留键在
lst1
中的顺序,也可以使用此选项,如注释中所示:

lst3 = [(k, v, dict2[k]) for k, v in lst1]

我建议你先把那些元组列表变成字典。然后,假设两个列表包含相同的“键”,您可以使用简单的列表理解从两个字典中获取相应的值

lst1 = [ ('a', 1), ('b', 2), ('c', 3) ]
lst2 = [ ('b', 5), ('a', 4), ('c', 6) ] 
dict1 = dict(lst1)
dict2 = dict(lst2)
lst3 = [(k, dict1[k], dict2[k]) for k in sorted(dict1)]
请注意,字典没有固定的顺序。如果要保留键在
lst1
中的顺序,也可以使用此选项,如注释中所示:

lst3 = [(k, v, dict2[k]) for k, v in lst1]
然后您可以将此格式
dst1
转换为您想要的结果格式


然后,您可以将此格式设置为您想要的结果格式。

您只需使用lst1中每个元组的第一个元素作为键并存储元组作为值来创建一个dict,然后迭代第二个列表并将最后一个元素添加到dict中相应的元组中

lst1 = [('a', 1), ('b', 2), ('c', 3)]
lst2 = [('b', 5), ('a', 4), ('c', 6)]
from collections import OrderedDict
d = OrderedDict(zip((tup[0] for tup in lst1), lst1))

for k,v  in lst2:
    d[k] = d[k] + (v,)
print(d.values())
[('a', 1, 4), ('b', 2, 5), ('c', 3, 6)]

您只需要使用lst1中每个元组的第一个元素作为键并将该元组存储为值来创建一个dict,然后迭代第二个列表并将最后一个元素添加到dict中相应的元组中

lst1 = [('a', 1), ('b', 2), ('c', 3)]
lst2 = [('b', 5), ('a', 4), ('c', 6)]
from collections import OrderedDict
d = OrderedDict(zip((tup[0] for tup in lst1), lst1))

for k,v  in lst2:
    d[k] = d[k] + (v,)
print(d.values())
[('a', 1, 4), ('b', 2, 5), ('c', 3, 6)]

你真的需要用字典。为什么不呢?如果这些是dict而不是元组列表,这会容易得多。他们不这样做有什么原因吗?(如果有原因,可能与键顺序或重复键有关,那么……如何确定
lst3
中的顺序,以及如果存在重复键会发生什么情况?)无论如何,即使这些确实需要列表,最简单的解决方案是制作一个临时的
dct2=dict(lst2)
;然后您可以,例如,
lst3=[(key,value,dct2[key])作为lst1中的key,value]
。我必须得到ID,lst3的第一个值和第二个值,按第一个元素排序,然后再按第二个元素排序(从0开始计数)。是的,它应该是。对不起,你真的需要用字典。为什么不呢?如果这些是dict而不是元组列表,这会容易得多。他们不这样做有什么原因吗?(如果有原因,可能与键顺序或重复键有关,那么……如何确定
lst3
中的顺序,以及如果存在重复键会发生什么情况?)无论如何,即使这些确实需要列表,最简单的解决方案是制作一个临时的
dct2=dict(lst2)
;然后您可以,例如,
lst3=[(key,value,dct2[key])作为lst1中的key,value]
。我必须得到ID,lst3的第一个值和第二个值,按第一个元素排序,然后再按第二个元素排序(从0开始计数)。是的,它应该是。很抱歉