繁体   English   中英

Python中元组的多字符串替换

[英]Multiple string substitution for tuples in Python

我想用替换集替换元组中的多个字符串元素。

from itertools import chain

old = [('Jack','Mike'),('Rosa','Mike'),('Pete','Jake'),('Beth','Jake')]
uniquelist = list(dict.fromkeys([ i for i in chain(*old)]))
replaceset = [("a" + str(new),old) for new,old in enumerate(uniquelist)]

replaceset是:

[('a0', 'Jack'), ('a1', 'Mike'), ('a2', 'Rosa'), ('a3', 'Pete'), ('a4', 'Jake'), ('a5', 'Beth')]

这是我想要的old输出。

[('a0','a1'),('a2','a1'),('a3','a4'),('a5','a4')]

有什么办法可以解决这个问题吗?

我将在这里假设您正在使用 Python 3.7+,并且维护顺序对您很重要。

只需将replaceset转换为 dict 并使用列表理解重新创建old

from itertools import chain

old = [('Jack','Mike'),('Rosa','Mike'),('Pete','Jake'),('Beth','Jake')]
uniquelist = list(dict.fromkeys([ i for i in chain(*old)]))
#replaceset = [("a" + str(new),old) for new,old in enumerate(uniquelist)]
replaceset = {old:"a" + str(new) for new, old in enumerate(uniquelist)}

res = [tuple(replaceset[name] for name in sub) for sub in old]
print(res)  # [('a0', 'a1'), ('a2', 'a1'), ('a3', 'a4'), ('a5', 'a4')]

作为旁注,

uniquelist = dict.fromkeys(chain(*old))

也会工作,让你更有效率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM