比较 2 个具有相同大小的元组列表,:比较和交换

问题描述

制作了 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)}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...