Python은 키 표시가 없는 경우 키 표시를 업데이트합니다.
키가 dict.keys()에 없으면 키-값 쌍을 dict에 삽입합니다.기본적으로 다음과 같은 기능을 사용할 수 있습니다.
if key not in d.keys():
d[key] = value
하지만 더 좋은 방법이 있을까요?아니면 이 문제에 대한 비단결 같은 해결책은 무엇일까요?
전화할 필요가 없습니다.d.keys()
,그렇게
if key not in d:
d[key] = value
충분합니다.더 명확하고 읽기 쉬운 방법은 없습니다.
다음을 사용하여 다시 업데이트할 수 있습니다.dict.get()
키가 이미 있는 경우 기존 값을 반환합니다.
d[key] = d.get(key, value)
그러나 이는 코드 골프로 유지보수와 가독성을 저해하는 것입니다.
사용:
>>> d = {'key1': 'one'}
>>> d.setdefault('key1', 'some-unused-value')
'one'
>>> d # d has not changed because the key already existed
{'key1': 'one'}
>>> d.setdefault('key2', 'two')
'two'
>>> d
{'key1': 'one', 'key2': 'two'}
Python 3.9부터는 병합 연산자를 사용할 수 있습니다. |
두 개의 사전을 병합합니다.오른쪽의 딕트가 우선합니다.
new_dict = old_dict | { key: val }
예:
new_dict = { 'a': 1, 'b': 2 } | { 'b': 42 }
print(new_dict) # {'a': 1, 'b': 42}
참고: 업데이트된 값으로 새 사전을 만듭니다.
다음을 사용하여 여러 개의 값을 삽입하고 기본값을 사용할 수 있지만 새 사전을 만듭니다.
d = {**{ key: value }, **default_values}
가장 많은 표를 얻은 답변으로 테스트해 보았는데 평균적으로 다음 예제에서 볼 수 있듯이 이 방법이 더 빠릅니다.
for 루프 기반 방법과 압축 풀기 연산자 방법을 비교하는 속도 테스트.
사본이 없는 경우(d = default_vals.copy()
)는 첫 번째 사례에서 만들어지며, 가장 많이 투표된 답변은 규모의 순서에 도달하면 더 빠를 것입니다.10**5
그 이상.두 방법의 메모리 설치 공간은 동일합니다.
이 솔루션은 코드 한 줄에서만 사용할 수 있습니다.
dict[dict_key] = dict.get(dict_key,value)
의 두 번째 주장dict.get
키가 존재하지 않는 경우 키에 할당할 값입니다.이것은 할당 전에 평가되기 때문에dict[dict_key] =
우리가 그것에 접근하려고 할 때 그들의 키가 존재할 것이라는 것을 확신할 수 있습니다.
언급URL : https://stackoverflow.com/questions/42315072/python-update-a-key-in-dict-if-it-doesnt-exist
'programing' 카테고리의 다른 글
Oracle의 SEQUENCE.NEXTVAL에 해당하는 MySQL (0) | 2023.06.10 |
---|---|
속성 'id'가 'T' 유형에 없습니다. (2339) 유형 스크립트 Generics 스크립트 Generics 오류 (0) | 2023.06.10 |
XML을 반환하는 WebAPI (0) | 2023.06.10 |
한자가 있는 엑셀 파일을 CSV로 내보내려면 어떻게 해야 합니까? (0) | 2023.06.10 |
매크로가 인수 수에 따라 오버로드될 수 있습니까? (0) | 2023.06.10 |