Python에서 목록의 키와 빈 값을 사용하여 dict를 초기화하려면 어떻게 해야 합니까?
이것으로부터 얻고 싶다.
keys = [1,2,3]
다음과 같이 입력합니다.
{1: None, 2: None, 3: None}
그것을 하는 비토닉적인 방법이 있나요?
이것은 추악한 방법입니다.
>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}
dict.fromkeys
는 문제를 직접 해결합니다.
>>> dict.fromkeys([1, 2, 3, 4])
{1: None, 2: None, 3: None, 4: None}
이것은 실제로 클래스 메서드이기 때문에 dict-subclasses에서 동작합니다(예:collections.defaultdict
)도 마찬가지입니다.
옵션의 두 번째 인수(기본값)None
는 키에 사용할 값을 지정합니다.각 키에 대해 동일한 객체가 사용되므로 변동 가능한 값에 문제가 발생할 수 있습니다.
>>> x = dict.fromkeys([1, 2, 3, 4], [])
>>> x[1].append('test')
>>> x
{1: ['test'], 2: ['test'], 3: ['test'], 4: ['test']}
딕트 이해 사용:
>>> 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}
값 표현은 매번 평가되므로 개별 목록(say)을 값으로 사용하여 dict를 작성할 수 있습니다.
>>> x = {key: [] for key in [1, 2, 3, 4]}
>>> x[1] = 'test'
>>> x
{1: 'test', 2: [], 3: [], 4: []}
dict.fromkeys(keys, None)
목록 이해 기능을 사용하여 키와 값의 쌍 목록을 작성할 수 있으며, 키와 값의 쌍은 다음 에 전달될 수 있습니다.dict
컨스트럭터다음과 같이 됩니다.
>>> keys = {"a", "b", "c", "d"}
>>> d = dict([(key, []) for key in keys])
>>> d
{'d': [], 'c': [], 'a': [], 'b': []}
값 표현은 매번 평가되며 위의 예에서 개별 목록을 만듭니다.
>>> d['a'].append('test')
>>> d
{'d': [], 'c': [], 'a': ['test'], 'b': []}
빈 사전에 값을 추가하고 반복하기만 하면 됩니다.
d = {}
for i in keys:
d[i] = None
임의의 키에 기본값/초기값을 부가하는 워크플로우에서는 미리 각 키를 개별적으로 해시할 필요가 없습니다.를 사용할 수 있습니다.예를 들어 다음과 같습니다.
from collections import defaultdict
d = defaultdict(lambda: None)
print(d[1]) # None
print(d[2]) # None
print(d[3]) # None
이렇게 하면 인스턴스화 시 모든 키를 해시할 필요가 없어집니다.게다가.defaultdict
의 하위 클래스입니다.dict
따라서 보통 다시 일반 사전으로 변환할 필요가 없습니다.
허용 키에 대한 제어가 필요한 워크플로우의 경우 승인된 답변에 따라 다음을 사용할 수 있습니다.
d = dict.fromkeys([1, 2, 3, 4])
컨스트럭터가 와 잘 동작하는 것이 재미있다고 해서 디폴트값과zip
키를 누릅니다.
from itertools import repeat
keys = [1, 2, 3]
default_value = None
d = dict(zip(keys, repeat(default_value)))
print(d)
제공 내용:
{1: None, 2: None, 3: None}
repeat
전달된 요소의 무한 반복자를 만들지만zip
가장 짧은 반복으로 멈추면 모든 것이 잘 작동합니다.
언급URL : https://stackoverflow.com/questions/2241891/how-to-initialize-a-dict-with-keys-from-a-list-and-empty-value-in-python
'source' 카테고리의 다른 글
새 속성을 동적으로 생성하는 방법 (0) | 2022.10.20 |
---|---|
PHP DateTime 마이크로초는 항상 0을 반환합니다. (0) | 2022.10.20 |
iOS에서의 Dellphi XE6 링크 C 코드 (0) | 2022.10.20 |
if-else 속기 사용 시 두 번째 표현 생략 (0) | 2022.10.20 |
Java Long 프리미티브 유형 최대 제한 (0) | 2022.10.20 |