[python] 파이썬에서 목록의 키와 빈 값으로 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])


답변