Подтвердить что ты не робот

Как преобразовать список кортежей ключ-значение в словарь?

У меня есть список, который выглядит так:

[('A', 1), ('B', 2), ('C', 3)]

Я хочу превратить его в словарь, который выглядит так:

{'A': 1, 'B': 2, 'C': 3}

Какой лучший способ пойти по этому поводу?

РЕДАКТИРОВАТЬ: мой список кортежей на самом деле больше похож на:

[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]
4b9b3361

Ответ 1

Это дает мне ту же ошибку, что и попытка разбить список и закрепить его. ValueError: элемент последовательности обновления словаря # 0 имеет длину 1916; 2 требуется

Это ваш актуальный вопрос.

Ответ заключается в том, что элементы вашего списка не так, как вы думаете. Если вы наберете myList[0], вы обнаружите, что первый элемент вашего списка не является двумя кортежами, например. ('A', 1), но длина повторяемости равна 1916.

Когда у вас на самом деле есть список в форме, указанной в исходном вопросе (myList = [('A',1),('B',2),...]), все, что вам нужно сделать, это dict(myList).

Ответ 2

>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}

Ответ 3

Вы пробовали это?

>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}

Ответ 4

Вот способ обработки дубликатов "ключей" кортежа:

# An example
l = [('A', 1), ('B', 2), ('C', 3), ('A', 5), ('D', 0), ('D', 9)]

# A solution
d = dict()
[d [t [0]].append(t [1]) if t [0] in list(d.keys()) 
 else d.update({t [0]: [t [1]]}) for t in l]
d

OUTPUT: {'A': [1, 5], 'B': [2], 'C': [3], 'D': [0, 9]}

Ответ 5

Другой способ использования списочных представлений,

>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = [{ i:j for i,j in t }]
>>> d
[{'A': 1, 'C': 3, 'B': 2}]