기본 dict를 dict로 변환하는 방법?
변환하려면 어떻게 해야 합니까?defaultdict
number_to_letter
defaultdict(<class 'list'>, {'2': ['a'], '3': ['b'], '1': ['b', 'a']})
일반적인dict?
{'2': ['a'], '3': ['b'], '1': ['b', 'a']}
전화만 하면 됩니다.dict:
>>> a
defaultdict(<type 'list'>, {'1': ['b', 'a'], '3': ['b'], '2': ['a']})
>>> dict(a)
{'1': ['b', 'a'], '3': ['b'], '2': ['a']}
하지만 기본 딕트는 딕트임을 기억하세요.
>>> isinstance(a, dict)
True
단지 약간 다른 행동으로, 당신이 누락된 키에 접근하려고 할 때 -- 보통은 그것을 제기할 것입니다.KeyError-- 그.default_factory가 대신 호출됩니다.
>>> a.default_factory
<type 'list'>
그게 당신이 볼 때 당신이 보는 것입니다.print a사전의 데이터 측면이 나타나기 전에.
따라서 실제로 새로운 객체를 만들지 않고 더 많은 dict와 같은 행동을 되찾기 위한 또 다른 방법은 재설정하는 것입니다.default_factory:
>>> a.default_factory = None
>>> a[4].append(10)
Traceback (most recent call last):
File "<ipython-input-6-0721ca19bee1>", line 1, in <module>
a[4].append(10)
KeyError: 4
하지만 대부분의 경우 이것은 수고할 가치가 없습니다.
기본 딕트가 재귀적으로 정의되는 경우 다음과 같습니다.
from collections import defaultdict
recurddict = lambda: defaultdict(recurddict)
data = recurddict()
data["hello"] = "world"
data["good"]["day"] = True
기본 딕트를 딕트로 다시 변환하는 또 다른 간단한 방법은json모듈
import json
data = json.loads(json.dumps(data))
물론 기본 딕트에 포함된 값은 json 지원 데이터 유형으로 제한되어야 하지만 클래스나 함수를 딕트에 저장하지 않을 경우에는 문제가 되지 않습니다.
재귀적 변환을 위한 재귀적 버전을 원하는 경우defaultdict에 이르기까지dict다음을 시도해 볼 수 있습니다.
#! /usr/bin/env python3
from collections import defaultdict
def ddict():
return defaultdict(ddict)
def ddict2dict(d):
for k, v in d.items():
if isinstance(v, dict):
d[k] = ddict2dict(v)
return dict(d)
myddict = ddict()
myddict["a"]["b"]["c"] = "value"
print(myddict)
mydict = ddict2dict(myddict)
print(mydict)
언급URL : https://stackoverflow.com/questions/20428636/how-to-convert-defaultdict-to-dict
'programing' 카테고리의 다른 글
| printf()를 사용하는 데 #include가 필요하지 않은 이유는 무엇입니까? (0) | 2023.11.05 |
|---|---|
| 어떻게 요일과 일년의 달을 얻을 수 있습니까? (0) | 2023.11.05 |
| jQuery - 요소 내부에서 요소 선택 (0) | 2023.10.31 |
| Google 지도 마커 아이콘 이미지 크기 조정 (0) | 2023.10.31 |
| a의 내용을 변경하는 방법a의 내용을 변경하는 방법a의 내용을 변경하는 방법 (0) | 2023.10.31 |