我有这个python词典“mydict”,包含数组,这就是它的样子:
mydict = dict(
one=['foo', 'bar', 'foobar', 'barfoo', 'example'],
two=['bar', 'example', 'foobar'],
three=['foo', 'example'])
我想用“someotherword”替换所有“example”的出现。
虽然我已经想到了几种方法,但有没有最“pythonic”的方法来实现这个目标?
答案 0 :(得分:2)
for arr in mydict.values():
for i, s in enumerate(arr):
if s == 'example':
arr[i] = 'someotherword'
答案 1 :(得分:2)
如果您希望保持原始状态不变,只需返回应用了修改的新词典,您可以使用:
replacements = {'example' : 'someotherword'}
newdict = dict((k, [replacements.get(x,x) for x in v])
for (k,v) in mydict.iteritems())
这也有一个优点,即只需将它们添加到替换词典中,就可以轻松扩展新词。如果你想改变现有的dict,你可以使用相同的方法:
for l in mydict.values():
l[:]=[replacements.get(x,x) for x in l]
然而,它可能会慢于J.F Sebastian's解决方案,因为它会重建整个列表而不仅仅是修改已更改的元素。
答案 2 :(得分:1)
这是另一个想法:
for key, val in mydict.items():
mydict[key] = ["someotherword" if x == "example" else x for x in val]
我发现构建列表快速非常,但当然,如果性能很重要,则可以进行配置。