스택큐힙리스트

파이썬에서 리스트의 키와 빈 값으로 사전을 초기화하는 방법은 무엇인가요? 본문

카테고리 없음

파이썬에서 리스트의 키와 빈 값으로 사전을 초기화하는 방법은 무엇인가요?

스택큐힙리스트 2023. 4. 24. 00:08
반응형

저는 이것으로부터 얻고 싶습니다.

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}

답변 1

dict.fromkeys는 문제를 직접 해결합니다.

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

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

이것은 실제로 classmethod이므로 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']}

이게 받아들일 수 없다면 해결책을 찾기 위해 How can I initialize a dictionary whose values are distinct empty lists?을(를) 참조하세요.

답변 2

파이썬에서 리스트로부터 키를 가진 딕셔너리를 초기화하는 방법은 매우 쉽습니다. 이러한 작업을 수행하기 위해 딕셔너리 컴프리헨션을 사용할 수 있습니다. 리스트 내의 각 항목을 딕셔너리의 키로 사용하고 빈 값을 할당합니다. 이것은 다음과 같이 수행될 수 있습니다.

```

my_list = ['apple', 'banana', 'orange']

my_dict = {key: None for key in my_list}

```

이 예제에서는 my_list라는 리스트를 선언하고, 이를 이용하여 빈 값을 가진 딕셔너리인 my_dict를 초기화합니다. 이를 위해서 리스트 컴프리헨션에서 사용하는 구문을 거꾸로 사용하는 딕셔너리 컴프리헨션이 사용됩니다. 이 구문은 my_list 내의 각 항목을 my_dict의 키로 사용하고, 이에 대한 값을 None으로 할당합니다.

이러한 딕셔너리 초기화 기술은 키 목록이 미리 필요한 경우 특히 유용합니다. 이를 통해 딕셔너리에 키를 넣고 나중에 다른 값들을 추가하는 것이 쉬워지며, 공간과 시간을 더욱 효과적으로 사용할 수 있습니다.

반응형
Comments