2012-08-01 137 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