일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터구조
- 데이터베이스
- I'm Sorry
- 사이버보안
- 빅데이터
- 자바스크립트
- 데이터분석
- 프로그래밍
- 코딩
- 클라우드컴퓨팅
- 컴퓨터비전
- 컴퓨터과학
- 인공지능
- 프로그래밍언어
- 자료구조
- 컴퓨터공학
- 네트워크보안
- 소프트웨어공학
- 알고리즘
- 버전관리
- 데이터과학
- Yes
- 딥러닝
- 보안
- 머신러닝
- 2
- 네트워크
- 소프트웨어
- 파이썬
- 웹개발
- Today
- Total
스택큐힙리스트
파이썬에서 리스트의 키와 빈 값으로 사전을 초기화하는 방법은 무엇인가요? 본문
저는 이것으로부터 얻고 싶습니다.
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으로 할당합니다.
이러한 딕셔너리 초기화 기술은 키 목록이 미리 필요한 경우 특히 유용합니다. 이를 통해 딕셔너리에 키를 넣고 나중에 다른 값들을 추가하는 것이 쉬워지며, 공간과 시간을 더욱 효과적으로 사용할 수 있습니다.