이 숙제 좀 도와주세요 : ({: 1, 2 : 0, 4 : 2, 6 : 1, 9 : 1})사전
makeA
출력해야 이렇게 될 :
[1, 0, 1, 0, 2, 0, 1, 0, 0, 1]
이 숙제 좀 도와주세요 : ({: 1, 2 : 0, 4 : 2, 6 : 1, 9 : 1})사전
makeA
출력해야 이렇게 될 :
[1, 0, 1, 0, 2, 0, 1, 0, 0, 1]
는 지능형리스트보십시오 :
def makeA(d, default=0):
"""Converts a dictionary to a list. Pads with a default element
Examples:
>>> makeA({0: 1, 2: 1, 4: 2, 6: 1, 9: 1})
[1, 0, 1, 0, 2, 0, 1, 0, 0, 1]
>>> makeA({3: 'kos'},'')
['', '', '', 'kos']
"""
maxElem = max(d)
return [d.get(x, default) for x in range(maxElem+1)]
함수 본문의 첫 번째 줄은 DICT의 최대 키를 찾습니다를 (때문에객체는 반복 할 때 키를 생성합니다. 최대 키가 5 인 경우 6 개의 요소 [0..6]의 배열이 필요합니다.
마지막 줄은 시퀀스 0 .. maxElem
에 대해 목록 이해도를 사용하고이 시퀀스의 각 값에 대해이 키에 대해 d
의 값을 지정하고 그렇지 않은 경우 0을 할당합니다.
예, 목록 이해에 기본값을 사용할 수 있습니다. 하지만 defaultdict 클래스가 대신 할 수있는 스타일이 더 좋다고 생각합니다. 그리고 부팅 할 때 좀 더 읽기 쉬운 코드를 얻을 수 있습니다! :-)
from collections import defaultdict
def makeA(d):
dd = defaultdict(int, d)
return [dd[n] for n in range(10)]
print makeA({0: 1, 2: 1, 4: 2, 6: 1, 9: 1})
"코드 줄 수 있습니까?" 너 뭐 해봤 니? – Chowlett