programing

[key1,val1,key2,val2]를 딕트로 변환하시겠습니까?

luckcodes 2022. 9. 19. 22:19

[key1,val1,key2,val2]를 딕트로 변환하시겠습니까?

제가 합시다.a파이썬 짝수 , 입니다.

예를들면,

a = ['hello','world','1','2']

b서, snowledge.

b['hello'] = 'world'
b['1'] = '2'

이를 실현하기 위한 구문적으로 가장 깨끗한 방법은 무엇입니까?

b = dict(zip(a[::2], a[1::2]))

ifa큼직합니다.상기와 같은 일시적인 리스트는 작성되지 않는 다음과 같은 작업을 하는 것이 좋습니다.

from itertools import izip
i = iter(a)
b = dict(izip(i, i))

억양을 방법은 Python 3을 사용하는 입니다.range() ★★★★★★★★★★★★★★★★★」len()보통 코드 냄새일 거예요

b = {a[i]: a[i+1] for i in range(0, len(a), 2)}

그...iter()/izip() Method Python 3은 했듯이 EOL은 Python 3에서 가장 많은 피토닉입니다.zip()에 Python 3은 izip().

i = iter(a)
b = dict(zip(i, i))

3.8에서는 "(Python 3.8 "walrus" "Walrus")를 하여 한 에 이 을 쓸 수 .:=

b = dict(zip(i := iter(a), i))

그렇지 않으면 세미콜론을 사용하여 한 줄에 표시해야 합니다.

간단한 답변

또 다른 옵션(Alex Martelli의 서비스 - 출처):

dict(x[i:i+2] for i in range(0, len(x), 2))

관련주

이것이 있는 경우:

a = ['bi','double','duo','two']

이 경우 (목록의 각 요소가 특정 값(이 경우 2)을 입력한다)이 필요합니다.

{'bi':2,'double':2,'duo':2,'two':2}

다음을 사용할 수 있습니다.

>>> dict((k,2) for k in a)
{'double': 2, 'bi': 2, 'two': 2, 'duo': 2}

이 경우 딕트 이해를 쉽게 사용할 수 있습니다.

a = ['hello','world','1','2']

my_dict = {item : a[index+1] for index, item in enumerate(a) if index % 2 == 0}

이는 다음 for 루프와 동일합니다.

my_dict = {}
for index, item in enumerate(a):
    if index % 2 == 0:
        my_dict[item] = a[index+1]

꽤 멋지다고 생각되는 것은, 리스트의 길이가 2개뿐인 경우입니다.

ls = ['a', 'b']
dict([ls])
>>> {'a':'b'}

기억하라, dict는 반복 가능한 것을 포함하는 모든 반복 가능한 것을 받아들인다. 여기서 반복 가능한 것의 각 항목은 정확히 두 개의 오브젝트를 가진 반복 가능한 것이어야 한다.

비단뱀은 아닐지금은 몰라도

>>> b = {}
>>> for i in range(0, len(a), 2):
        b[a[i]] = a[i+1]

어레이를 추가 작성하지 않아도 매우 빠르게 실행할 수 있기 때문에 대규모 어레이에서도 다음과 같이 동작합니다.

dict(izip(*([iter(a)]*2)))

a더: , , , , , , , , 「 」

dict(izip(*([a]*2)))

개요는 다음과 같습니다.

iter(h)    #create an iterator from the array, no copies here
[]*2       #creates an array with two copies of the same iterator, the trick
izip(*())  #consumes the two iterators creating a tuple
dict()     #puts the tuples into key,value of the dictionary

다음과 같이 할 수도 있습니다(여기서 변환을 나열하고 사전으로 변환하는 문자열).

    string_list = """
    Hello World
    Goodbye Night
    Great Day
    Final Sunset
    """.split()

    string_list = dict(zip(string_list[::2],string_list[1::2]))

    print string_list

Perl에서는 이러한 리스트가 기본 이니셜라이저이기 때문에 이 변환에 대한 원라이너도 매우 흥미가 있습니다.

이 스레드는 매우 포괄적인 답변을 제공합니다.

Python 2.7 Generator Expressions를 사용한 Python의 신참)은 다음과 같습니다.

dict((a[i], a[i + 1]) for i in range(0, len(a) - 1, 2))

이것이 비단뱀인지 아닌지는 모르겠지만 효과가 있는 것 같다

def alternate_list(a):
   return a[::2], a[1::2]

key_list,value_list = alternate_list(a)
b = dict(zip(key_list,value_list))

아래 코드 시도:

  >>> d2 = dict([('one',1), ('two', 2), ('three', 3)])
  >>> d2
      {'three': 3, 'two': 2, 'one': 1}

이 방법을 사용하여 키와 값을 다른 목록에 저장한 다음 dict 메서드를 사용할 수도 있습니다.

data=['test1', '1', 'test2', '2', 'test3', '3', 'test4', '4']

keys=[]
values=[]
for i,j in enumerate(data):
    if i%2==0:
        keys.append(j)
    else:
        values.append(j)

print(dict(zip(keys,values)))

출력:

{'test3': '3', 'test1': '1', 'test2': '2', 'test4': '4'}
{x: a[a.index(x)+1] for x in a if a.index(x) % 2 ==0}

result : {'hello': 'world', '1': '2'}

언급URL : https://stackoverflow.com/questions/4576115/convert-key1-val1-key2-val2-to-a-dict