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

| 假设我有“ 0”作为包含以任意顺序命名的名称元组的元组列表:
names = [(1,\"Alice\"), (2,\"Bob\")]
genders
作为另一个包含任意顺序的性别元组的元组列表:
genders = [(2,\"male\"), (1,\"female\")]
我如何通过使用元组的第一个元素作为获取键来有效地匹配两个列表:
result = [(\"Alice\",\"female\"), (\"Bob\",\"male\")]
    
已邀请:
简单的一线回答,运行缓慢:
[(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)]
    
转换为字典,收集键并进行迭代。     

要回复问题请先登录注册