Programing

파이썬에서 목록의 키와 빈 값으로 dict를 초기화하는 방법은 무엇입니까?

lottogame 2020. 4. 27. 07:54
반응형

파이썬에서 목록의 키와 빈 값으로 dict를 초기화하는 방법은 무엇입니까?


나는 이것으로부터 얻고 싶다 :

keys = [1,2,3]

이에:

{1: None, 2: None, 3: None}

그것을하는 pythonic 방법이 있습니까?

이것은 못생긴 방법입니다.

>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}

dict.fromkeys([1, 2, 3, 4])

이것은 실제로 클래스 메소드이므로 dict-subclasses (예 :)에서도 작동 collections.defaultdict합니다. 선택적 두 번째 인수는 키에 사용할 값을 지정합니다 (기본값은) None.


아무도 dict-comprehension 솔루션을 제공하는 데 관심이 없었습니까?

>>> keys = [1,2,3,5,6,7]
>>> {key: None for key in keys}
{1: None, 2: None, 3: None, 5: None, 6: None, 7: None}

dict.fromkeys(keys, None)

>>> keyDict = {"a","b","c","d"}

>>> dict([(key, []) for key in keyDict])

산출:

{'a': [], 'c': [], 'b': [], 'd': []}

d = {}
for i in keys:
    d[i] = None

에서 많은 사용자가 임의의 키에 대한 기본 / 초기 값을 첨부 할 워크 플로우, 당신은하지 않습니다 필요가 개별적으로 미리 해시에 각 키를. 사용할 수 있습니다 collections.defaultdict. 예를 들면 다음과 같습니다.

from collections import defaultdict

d = defaultdict(lambda: None)

print(d[1])  # None
print(d[2])  # None
print(d[3])  # None

보다 효율적으로 인스턴스화 할 때 모든 키를 해시 할 필요가 없습니다. 또한 defaultdict의 하위 클래스 dict이므로 보통 일반 사전으로 다시 변환 할 필요가 없습니다.

허용 가능한 키에 대한 제어가 필요한 워크 플로의 경우 dict.fromkeys허용 된 답변에 따라 사용할 수 있습니다 .

d = dict.fromkeys([1, 2, 3, 4])

참고 : https://stackoverflow.com/questions/2241891/how-to-initialize-a-dict-with-keys-from-a-list-and-empty-value-in-python

반응형