나는 이것으로부터 얻고 싶다 :
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])