을 덮어 쓰기됩니다내가 다음과 같은 파이썬 코드의 조각을 이전 값
final_dict = {}
default_dict = some_data
for dict in list_of_dicts:
# I am getting list_of_dicts from a json file
resultant_dict = merge_dicts(dict, default_dict)
id = return_value_from_a_function(resultant_dict)
final_dict[id] = resultant_dict # id will be different in each loop
(나는 내 실제 코드를 매우 큰 있기 때문에 붙여 넣을 수 없음을 유감스럽게 생각한다)
그래서 final_dict는 id를 키로, calculated_dict를 값으로 사용합니다. 내 문제는 for 루프의 끝에서 final_dict의 모든 내 값이 finally_dict의 마지막 값과 동일하다는 것입니다. 나는 이전 값을 덮어 쓰고 있다고 생각한다. 이 문제를 해결하는 방법 ..?
EDIT 1 : merge_dicts 실제로 두 dicts의 공용체를 만듭니다. results_dict를 인쇄 할 때마다 예상대로 다른 dict을 인쇄합니다. 그러나 final_dict에 값을 할당하면 이전 값을 모두 최신 값으로 수정합니다.
EDIT 2 : 모든 입력 데이터는 json 파일에서 가져 오는 dict입니다. 최종 DICT 아래
final_dict = {
id1 : dict1,
id2 : dict2
}
처럼 보일 것이다 그러나 나는
final_dict = {
id1 : dict2,
id2 : dict2
}
EDIT 3 (그것은 최신 DICT 값이 모든 값을 덮어 쓰기됩니다) 아래와 같이 점점 오전 :이 merge_dicts가
를 작동하는 방법이다def merge_dicts(tmp1, tmp2):
'''
merges tmp2 into tmp1
'''
for key in tmp2:
if key in tmp1:
if isinstance(tmp1[key], dict) and isinstance(tmp2[key], dict):
merge_dicts(tmp1[key], tmp2[key])
else :
tmp1[key] = tmp2[key]
else:
tmp1[key] = tmp2[key]
return tmp1
'merge_dicts'의 기능은 무엇입니까? 어떤 입력 데이터를 다루고 있습니까? 출력 데이터가 최종적으로 어떻게 생겼을 까? 좋은 정보를 얻기 위해이 세부 사항을 제공하십시오 – idjaw
당신의'merge_dict' 함수가'default_dict'를 수정하고 그것을 돌려 준다고 의심합니다 –
실제 상황을보다 잘 설명 할 수 있도록주십시오. 당신의 코드? – idjaw