python 根据另一个列表重命名列表元素
python renaming list element based on another list
我有两个列表如下
A=['a','b','c']
B=['0_txt1','0_txt2','1_txt1','1_txt2','2_txt1','2_txt2']
我应该用 A 中相应的列表元素重命名 B 元素中的前缀编号,因此所需的输出是:
B=['a_txt1','a_txt2','b_txt1','b_txt2','c_txt1','c_txt2']
如何通过读取和替换元素来做到这一点?谢谢!
使用列表理解:
B = [x.replace(x.split("_")[0], A[int(x.split("_")[0])], 1) for x in B]
或者使用 Walrus Operator (Python 3.8+) 来避免重复计算 x.split("_")[0]
B = [x.replace((p:=x.split("_")[0]), A[int(p)], 1) for x in B]
尝试使用格式字符串、枚举和 zip 进行列表推导
A=['a','b','c']
B=['0_txt1','0_txt2','1_txt1','1_txt2','2_txt1','2_txt2']
C = [f"{z}_{x.split('_')[1]}" for x in B for y,z in enumerate(A) if x.split('_')[0] == str(y)]
print(C)
这是一个简单的循环,它会检查 A 的索引是否与 B 中项目的前导数字相匹配,然后相应地替换数字
C = []
for string in B:
for x in A:
if string.startswith(str(A.index(x))):
C.append(string.replace(str(A.index(x)), x, 1))
我有两个列表如下
A=['a','b','c']
B=['0_txt1','0_txt2','1_txt1','1_txt2','2_txt1','2_txt2']
我应该用 A 中相应的列表元素重命名 B 元素中的前缀编号,因此所需的输出是:
B=['a_txt1','a_txt2','b_txt1','b_txt2','c_txt1','c_txt2']
如何通过读取和替换元素来做到这一点?谢谢!
使用列表理解:
B = [x.replace(x.split("_")[0], A[int(x.split("_")[0])], 1) for x in B]
或者使用 Walrus Operator (Python 3.8+) 来避免重复计算 x.split("_")[0]
B = [x.replace((p:=x.split("_")[0]), A[int(p)], 1) for x in B]
尝试使用格式字符串、枚举和 zip 进行列表推导
A=['a','b','c']
B=['0_txt1','0_txt2','1_txt1','1_txt2','2_txt1','2_txt2']
C = [f"{z}_{x.split('_')[1]}" for x in B for y,z in enumerate(A) if x.split('_')[0] == str(y)]
print(C)
这是一个简单的循环,它会检查 A 的索引是否与 B 中项目的前导数字相匹配,然后相应地替换数字
C = []
for string in B:
for x in A:
if string.startswith(str(A.index(x))):
C.append(string.replace(str(A.index(x)), x, 1))