2012-08-01 5 views
6

가능한 중복 :
Dictionary sorting by key length정렬 사전

나는 "검색 및 교체"의 사전을 사용해야합니다. 그리고 나는 그것이 가장 긴 키를 먼저 사용하기를 원합니다. 그것은 지금처럼

은 그래서

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

는 "배"가 아닌 "22"를 반환해야합니다. 단지 내부에 무엇을 얻을 수 없다

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

같은

뭔가.
하나의 문자열로 처리 할 수 ​​있습니까?

+3

는'dict'은 사전에 아주 나쁜 이름, 당신은 내장, – jamylak

+1

[파이썬 - 키 길이에 의해 사전 정렬]을 미행하는 (http://stackoverflow.com/questions/11753758/dictionary - sorting-by-key-length) -> 질문 5 분 전에 게시 됨 – elssar

+0

그래서'정렬 (d.iteritems(), key = lambda x : len (x [0]))) '대답처럼 보입니다. – Qiao

답변

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

+0

@Qiao 그럼'key = lambda k : len k)'당신은 거의 가지고 있었지만,이 경우'lambda '는 필요 없지만 어쩌면 그것이 명확 해집니다 :) – jamylak

+0

'len'을 인수없이 보지 못했습니다. – Qiao