12

可能重复:
字典按键长度排序

我需要使用字典进行“搜索和替换”。我希望它首先使用最长的键。

以便

text = 'xxxx'
dict = {'xxx' : '3','xx' : '2'} 
for key in dict:
    text = text.replace(key, dict[key])

应该返回“3x”,而不是现在的“22”。

就像是

for key in sorted(dict, ???key=lambda key: len(mydict[key])):

就是拿不到里面的东西。
是否可以在一个字符串中完成?

4

1 回答 1

29
>>> text = 'xxxx'
>>> d = {'xxx' : '3','xx' : '2'}
>>> for k in sorted(d, key=len, reverse=True): # Through keys sorted by length
        text = text.replace(k, d[k])


>>> text
'3x'
于 2012-08-01T06:48:26.903 回答