이 문제를 어떻게 호출해야할지 모르겠지만 현재 프로젝트에서 이미 해결 방법이 너무 많아서 도움을 요청하고 있습니다.
이 샘플 코드가 주어지면
def sensitive_update(sensitive, updated):
# ???
sensitive_data = {'user1': {'password' : '1234'}, 'user2': {'password': '4321'}}
updated_data = [
{'user1': {'id': 13}},
{'user2': {'password': '0000'}},
{'user3': {'id': 14}}
]
for data in updated_data:
sensitive_update(sensitive_data, data)
print(sensitive_data)
# should print
# {'user1': {'id': 13, 'password': '1234'}, 'user2': {'password': '0000'}, 'user3': {'id': 14}}
sensitive_update
함수 를 작성하는 대부분의 내장 또는 짧은 방법이 있습니까? 아니면 사전의 각 값을 수동으로 반복하여 피할 수 없습니까?
편집 : 추가 정보 : 함수는 병합 가능한 모든 사전을 병합하고 존재하지 않는 사전 및 키를 만듭니다.
사전을 수동으로 반복하는 이유는 모르겠지만 수행하려는 작업에 대한 일반적인 접근 방식은 다음과 같습니다.
In [3]: sensitive_data = {'user1': {'password' : '1234'}, 'user2': {'password': '4321'}}
...:
In [4]: updated_data = [
...: {'user1': {'id': 13}},
...: {'user2': {'password': '0000'}},
...: {'user3': {'id': 14}}
...: ]
In [5]: for data in updated_data:
...: for k,v in data.items():
...: sensitive_data.setdefault(k, {}).update(v)
...:
In [6]: sensitive_data
Out[6]:
{'user1': {'id': 13, 'password': '1234'},
'user2': {'password': '0000'},
'user3': {'id': 14}}
당신은 사용하여 성능을 얻을 수있는 defaultdict
너무 대신 일반을 dict
으로 setdefault
하는 방법. 본질적으로 setdefault
방법 을 수행하도록 최적화 된 사전 이지만 일반적인 키 액세스로 작동합니다.
In [11]: sensitive_data = {'user1': {'password' : '1234'}, 'user2': {'password': '4321'}}
...:
...:
In [12]: from collections import defaultdict
In [13]: d = defaultdict(dict)
In [14]: d.update(sensitive_data) # convert plain dict to defaultdict
In [15]: d
Out[15]:
defaultdict(dict,
{'user1': {'password': '1234'}, 'user2': {'password': '4321'}})
In [16]: for data in updated_data:
...: for k,v in data.items():
...: d[k].update(v)
...:
In [17]: d
Out[17]:
defaultdict(dict,
{'user1': {'id': 13, 'password': '1234'},
'user2': {'password': '0000'},
'user3': {'id': 14}})
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다