2012-08-01 72 views
6

可能重复:
Dictionary sorting by key length排序字典的密钥长度

我需要使用字典 “查找和替换”。我首先需要使用最长的键。

所以,因为它是现在

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

应该返回 “3倍”,而不是 “22”。

喜欢的东西

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

就不能得到里面是什么。
是否可以在一个字符串中执行?

+3

'dict'是一本字典一个非常坏的名字,你遮蔽内置, – jamylak 2012-08-01 06:40:44

+1

[蟒蛇 - 通过密钥长度字典排序(http://stackoverflow.com/questions/11753758/dictionary按键长度排序) - >在你的问题前5分钟发布 – elssar 2012-08-01 06:44:19

+0

我没有连接它)所以,'sorted(d.iteritems(),key = lambda x:len(x [0])) '似乎是一个答案。 – Qiao 2012-08-01 06:46:57

回答

14
>>> 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' 
+1

'key = len'是魔术 – Qiao 2012-08-01 06:51:58

+0

@乔好吧这就是'key = lambda k:len k)''你几乎有'',在这种情况下''lambda'不需要,但也许这使得它更清晰:) – jamylak 2012-08-01 06:54:36

+0

我从来没有见过'len'没有参数。 – Qiao 2012-08-01 06:59:33