나는 Merge dictionaries without overwriting values, merging "several" python dictionaries, How to merge multiple dicts with same key? 및 How to merge two Python dictionaries in a single expression?을 알고 있습니다.값이 목록 인 이전 값을 덮어 쓰지 않고 병합 사전
그러나 내 문제는 약간 다릅니다.
내가 병합 결과가
result_dict = {'a': [3.212, 3.212, 923.22], 'b': [0.0, 0.0], 'c': [123.32]}
이 코드는 여기서 일하는
을해야
dict_a = {'a': [3.212], 'b': [0.0]}
dict_b = {'a': [923.22, 3.212], 'c': [123.32]}
dict_c = {'b': [0.0]}
이 세 가지 사전을 가지고 있다고 할 수 있지만 목록에서 목록을 중첩 사용 것
result_dict = {}
dicts = [dict_a, dict_b, dict_c]
for d in dicts:
for k, v in d.iteritems():
result_dict.setdefault(k, []).append(v)
append
대신 extend
을 사용하면 nes ted 목록이지만 키가 아직 존재하지 않으면 작동하지 않습니다. 따라서 기본적으로 다른 스레드와 마찬가지로 덮어 쓰지 않고 update
을 수행해야합니다.
죄송합니다. 제 실수는 실수였습니다. 그것은 어제 너무 늦었고 오류를 던진 선이 내가 생각했던 것이 아니란 것을 알아 채지 못했습니다. 따라서 사전에 이미 위의 구조가 있다고 가정했습니다. 실제로 mgilson
은 TypeError
과 관련되어 있다고 가정하면 정확합니다. 정확히 말하자면, '부유 할 수있는 부유물'.
당신이 설명 할 수 있을까요? 'setdefault (k, [])'가 존재하지 않는 핵심 문제를 돌봐야하지 않습니까? – DSM
왜 'a'에 대한 결과 목록이 그 순서대로 끝났습니까? 나는 기대했을 것이다.'[3.212, 923.22, 3.212]' – mgilson
@mgilson 네, 죄송합니다. 나는 이미 내 머리를 정리했다. 그러나 그것은 당신이 말한 방식이어야합니다. – cherrun