通过 Python 中的三个列表元素替换一个值
Replacing a value through three list's elements in Python
A = ['d','a','c','a','a','d','a','d','c','e']
B = ['a','d','c','e']
C = ['z','x', 'y','k']
从上面可以看出,我有三个列表。列表 A 是字符的随机组合,而 B 是按频率对 A 列表中的元素重新排序而不重复它们。列表 C 是我要替换的值。我想检查列表B中的值是否在A中并将列表A中的值更改为列表C中的值。如果列表A中有一个值'B[0]',我想更改所有'B[0]' 列表 A 中的值更改为 C[0]。其余的元素也想这样做
我想要的:
A=['x','z','y','z','z','x','z','x','y','k']
我认为最简单的方法是创建一个字典,键 B
到值 C
并使用该字典替换 A
.
中的值
A = ['d','a','c','a','a','d','a','d','c','e']
B = ['a','d','c','e']
C = ['z','x', 'y','k']
char_dict = dict(zip(B, C))
for i, char in enumerate(A):
A[i] = char_dict[char]
这也可以使用列表理解来完成
char_dict = dict(zip(B, C))
A = [char_dict[char] for char in A]
您可以制作翻译字典 out of B and C 并使用列表理解。
>>> d = dict(zip(B, C))
>>> [d[x] for x in A]
['x', 'z', 'y', 'z', 'z', 'x', 'z', 'x', 'y', 'k']
如果 A
中的某些值可能不在 B
中,您可以将 d[x]
替换为 d.get(x, x)
.
如果您需要覆盖 A
的值,请使用 :
A[:] = [d[x] for x in A]
创建一个字典,将要替换的字符映射到它们的替换项,并替换列表推导中的字符:
A = ['d','a','c','a','a','d','a','d','c','e']
B = ['a','d','c','e']
C = ['z','x', 'y','k']
subs = dict(zip(B, C))
A = [subs[c] for c in A]
>>> A
['x', 'z', 'y', 'z', 'z', 'x', 'z', 'x', 'y', 'k']
我们可以假设 subs[c]
将始终成功,因为 B
派生自 A
,因此 B
中的所有项目也必须出现在 [=14= 中].
如果不是这种情况,那么您可以改用 dict.get()
:
A = [subs.get(c, c) for c in A]
A = ['d','a','c','a','a','d','a','d','c','e']
B = ['a','d','c','e']
C = ['z','x', 'y','k']
从上面可以看出,我有三个列表。列表 A 是字符的随机组合,而 B 是按频率对 A 列表中的元素重新排序而不重复它们。列表 C 是我要替换的值。我想检查列表B中的值是否在A中并将列表A中的值更改为列表C中的值。如果列表A中有一个值'B[0]',我想更改所有'B[0]' 列表 A 中的值更改为 C[0]。其余的元素也想这样做
我想要的:
A=['x','z','y','z','z','x','z','x','y','k']
我认为最简单的方法是创建一个字典,键 B
到值 C
并使用该字典替换 A
.
A = ['d','a','c','a','a','d','a','d','c','e']
B = ['a','d','c','e']
C = ['z','x', 'y','k']
char_dict = dict(zip(B, C))
for i, char in enumerate(A):
A[i] = char_dict[char]
这也可以使用列表理解来完成
char_dict = dict(zip(B, C))
A = [char_dict[char] for char in A]
您可以制作翻译字典 out of B and C 并使用列表理解。
>>> d = dict(zip(B, C))
>>> [d[x] for x in A]
['x', 'z', 'y', 'z', 'z', 'x', 'z', 'x', 'y', 'k']
如果 A
中的某些值可能不在 B
中,您可以将 d[x]
替换为 d.get(x, x)
.
如果您需要覆盖 A
的值,请使用
A[:] = [d[x] for x in A]
创建一个字典,将要替换的字符映射到它们的替换项,并替换列表推导中的字符:
A = ['d','a','c','a','a','d','a','d','c','e']
B = ['a','d','c','e']
C = ['z','x', 'y','k']
subs = dict(zip(B, C))
A = [subs[c] for c in A]
>>> A
['x', 'z', 'y', 'z', 'z', 'x', 'z', 'x', 'y', 'k']
我们可以假设 subs[c]
将始终成功,因为 B
派生自 A
,因此 B
中的所有项目也必须出现在 [=14= 中].
如果不是这种情况,那么您可以改用 dict.get()
:
A = [subs.get(c, c) for c in A]