한 줄 : 인덱스를 키로 사용하여 목록에서 사전 만들기


91

주어진 목록 에서 한 줄로 사전을 만들고 싶습니다 . 사전의 키는 인덱스가되고 값은 목록의 요소가됩니다. 이 같은:

a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)

산출:

{0:51, 1:27, 2:13, 3:56}

줄을 원하는 이유에 대한 구체적인 요구 사항이 없습니다 . 나는 단지 파이썬을 탐구하고 있고 그것이 가능한지 궁금합니다.


3
이 사전을 가지고 있으면 어떤 이점이 있다고 생각하십니까? 사전을 사용하면 색인 조회가 더 빠르지 않습니다.
Martijn Pieters

@MartijnPieters : 음, 예를 들어 다음이 필요할 수 있습니다 {[x[0]:51, x[1]:27, x[2]:13, x[3]:56}.
Nawaz

3
그런 다음 사용하십시오 zip(): dict(zip(x, a)).
Martijn Pieters

답변:


158
a = [51,27,13,56]
b = dict(enumerate(a))
print(b)

생산할 것이다

{0: 51, 1: 27, 2: 13, 3: 56}

enumerate(sequence, start=0)

열거 형 개체를 반환합니다. sequence 는 sequence, iterator 또는 반복을 지원하는 다른 객체 여야합니다 . 에서 next()반환 된 반복기 의 메서드는 개수 ( 시작부터 기본값은 0)와 시퀀스 반복에서 얻은 값을 포함 하는를 반환 enumerate()합니다 .tuple


2
@jamylak하지만 당신의 것을 제거 할 필요는 없습니다. 사람들은 count()... 에 대해 배울 수있었습니다 .
glglgl

@glglgl 한 가지 방법이 있어야합니다;)
jamylak

:) 2 minuts으로 날 이길
JCR

48

다른 생성자를 사용하면

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)

7
@StefanoSanfilippo Dict 및 set comprehensions는 Python 2.7로 백 포트되었습니다.
kevingessner

나는 바로 잡았다. 그래도 이것은 이전 Python 2 버전에는 적용되지 않습니다.
Stefano Sanfilippo 2013 년

14

시도해보십시오 enumerate: 튜플 목록 (또는 반복자)을 반환 (i, a[i])합니다 dict.

a = [51,27,13,56]  
b = dict(enumerate(a))
print b


3

목록 이해력을 사용하십시오.

a = [51,27,13,56]  
b = dict( [ (i,a[i]) for i in range(len(a)) ] )
print b
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.