[英]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.