问题描述
制作了 2 个元组列表: 我想使用字母表和计数器来比较两个列表。 su 的元组,属于列表 tu 中元组的索引。 -> tu 上的元组 0 有 (40,'b',1) -> 'b',1 在 su 中的元组 4 中是相同的,因此 su 的元组 4 应该转到索引 0,usw。
su = [(30,'a',1),(1,0),(4,(17,'c',(8,1)]
tu = [(40,(9,(3,(11,(12,1)]
for i,(s,t) in enumerate(zip(su,tu)):
if t[1] == 'H':
print(f" 'H' {i}")
我的最终通缉名单 su_new = [(8,b,(30,1)] 为了比较,我填写了两个列表,索引。 [(8,b),'c'),'b'),'a'),'a')]
解决方法
这有效:
from copy import copy
su = [(30,'a',1),(1,'b',0),(4,(17,'c',(8,1)]
tu = [(40,(9,(3,(11,(12,1)]
index_dic = {}
for i,tup in enumerate(tu):
index_dic[tup[1:]] = i
new_su = copy(su)
for tup in su:
new_index = index_dic[tup[1:]]
new_su[new_index] = tup
print(new_su)
#[(8,(30,1)]
或者,可以将 index_dic 构造为字典理解:
index_dic = {tup[1:]:i for i,tup in enumerate(tu)}