python 3列表嵌套元组,条件筛选数据,要求在代码块,请大家看看怎么解决该问题?
list1 = [("lily","19","yk","001"),("bob","22","hk","003"),("jack","24","us","009"),("yom","22","tl","098")]#取后2个
list2 = [("a","1","yk","089"),("b","2","kl","005"),("c","3","us","152"),("d","4","tw","192")]#取前2个
#筛选条件,若每个列表中元组第3个元素相等,结果取第1个列表元组前2个元素,第2个列表后2个元素
#??????
res = [("a","1","yk","001"),("c","3","us","009")]
# make dir
dict1 = dict((item[2], item[3]) for item in list1)
# slove problem
res1 = [item[:3] + (dict1[item[2]],) for item in list2 if item[2] in dict1]
print(res1)
【以下回答由 GPT 生成】
使用Python 3来筛选嵌套元组的列表数据,可以通过循环遍历两个列表,比较元组的第三个元素是否相等,并选择相应的元素构建新的列表。
以下是实现该功能的代码:
list1 = [('lily','19','yk','001'),('bob','22','hk','003'),('jack','24','us','009'),('yom','22','tl','098')]
list2 = [('a','1','yk','089'),('b','2','kl','005'),('c','3','us','152'),('d','4','tw','192')]
res = [] # 初始化结果列表
for tuple1 in list1:
for tuple2 in list2:
if tuple1[2] == tuple2[2]: # 判断元组的第三个元素是否相等
new_tuple = tuple2[:2] + tuple1[2:] # 构建新的元组
res.append(new_tuple) # 将新的元组添加到结果列表中
break # 找到匹配的元组后跳出内层循环
print(res)
运行上述代码,会输出期望的结果:
[('a', '1', 'yk', '001'), ('c', '3', 'us', '009')]
希望以上解决方案能够满足您的需求,如果有任何疑问,请随时追问。
【相关推荐】