list(word)
.. 가장 빠른 그것을
할 것입니다하지만 scrambled
를 정렬하면 사용할 수
scrambled.sort(key=word.index)
이것은 만 작동word
에는 반복되는 문자가 없습니다. scrambled
의 각 항목에 대해 word.index()
이 호출되고 word
에있는 각 문자의 색인이 반환되어 scrambled
목록을 정렬하는 데 사용됩니다.
데모 :
def make_sort_key(word):
indices = {}
for i, c in enumerate(word):
indices.setdefault(c, []).append(i)
def key(c):
return indices[c].pop()
return key
sorted(scrambled, key=make_sort_key(word))
이 word
에서 각 문자에 대한 인덱스를 사전 구축하고 이들를 반환
>>> word = "help"
>>> scrambled = ['p','e','h','l']
>>> list(word)
['h', 'e', 'l', 'p']
>>> sorted(scrambled, key=word.index)
['h', 'e', 'l', 'p']
반복 문자를 들어, word
인덱스를 기반으로 키 기능을 구축 할 수 있습니다 scrambled
목록이 정렬됩니다.
데모 :이 문자 그대로 해석
>>> word = 'letters'
>>> scrambled = ['s', 'e', 'l', 'r', 'e', 't', 't']
>>> def make_sort_key(word):
... indices = {}
... for i, c in enumerate(word):
... indices.setdefault(c, []).append(i)
... def key(c):
... return indices[c].pop()
... return key
...
>>> sorted(scrambled, key=make_sort_key(word))
['l', 'e', 't', 't', 'e', 'r', 's']
'단어'를 문자 목록으로 나눌 수 있기 때문에 그 질문을 이해할 수 없습니다. –
처음에는 '스크램블링'만 사용합니까? 왜'list (word)'를 사용할 수 없습니까? 다양한 새로운 단어를 생각해 내기 위해 글자를 재 배열해야합니까? 당신의 문제는 이해하기에 충분히 정의되지 않았습니다. –
'word = "helpl"와 같은 경우도 있습니까? 스크램블 드 = [ 'p', 'e', 'l', 'h', 'l']'? ' –