在Python中如何通过元组元素匹配两个元组列表?

2 投票
2 回答
3531 浏览
提问于 2025-04-16 15:42

假设我有一个叫做 names 的列表,这个列表里面是一些名字的元组,顺序是随意的:

names = [(1,"Alice"), (2,"Bob")]

还有一个叫做 genders 的列表,这个列表里面是一些性别的元组,顺序也是随意的:

genders = [(2,"male"), (1,"female")]

我该如何有效地将这两个列表匹配起来呢?可以用元组中的第一个元素作为关键字来获取:

result = [("Alice","female"), ("Bob","male")]

2 个回答

7

把数据转换成字典格式,收集所有的键,然后进行遍历。

7

简单的一行代码答案,但运行得比较慢:

[(name, gender) for (id0, gender) in genders for (id1, name) in names if id0==id1]

更好的答案(可以看看Ignazio的回复):

namedict = dict(names)
genderdict = dict(genders)
[(namedict[id], genderdict[id]) for id in set(namedict) & set(genderdict)]

撰写回答