0
발전기를 사용할 때 전달 된 사전을 수정하더라도 발전기가 이전 데이터 구조의 결과를 여전히 제공합니다. 어떻게 해결할 수 있습니까?발전기를 사용할 때 사전을 최신 상태로 유지하는 방법은 무엇입니까?
def min_key_order(adict:dict):
for key, value in sorted(adict.items()):
yield (key, value)
d = {1:'a', 2:'x', 4:'m', 8:'d', 16:'f'}
i = min_key_order(d)
print(next(i))
d.pop(2)
print(next(i))
그리고 그것은 나에게 (1,'a')
, (2,'x')
를 제공, 심지어 나는 사전에서이 키 팝업있다.
변경 한 사전을 반복 할 수 없습니다. 그건 지원되지 않는 행동입니다. –
그러나'sorted()'함수는 ** 새로운 목록을 생성합니다 **; 이 목록은 원본 dicitonary의 변경 사항을 따르도록 업데이트되지 않습니다. –
이들 중 어느 것도 발전기와 관련이 없으므로'd.pop()'를'for' 루프 안에'sorted (d) '를 넣으면 똑같은 동작을합니다. –