Вот как я сейчас конвертирую список кортежей в словарь в Python:
l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}
Есть ли способ лучше? Похоже, что для этого должен быть однострочный.
Вот как я сейчас конвертирую список кортежей в словарь в Python:
l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}
Есть ли способ лучше? Похоже, что для этого должен быть однострочный.
Ответы:
Просто вызовите dict()
список кортежей напрямую
>>> my_list = [('a', 1), ('b', 2)]
>>> dict(my_list)
{'a': 1, 'b': 2}
dict
, которая затеняет встроенный Python с тем же именем. Вы никогда не должны этого делать.
dict
имя переменной, откуда я получил ошибку. Еще раз спасибо.
dict
Конструктор принимает входные данные точно так , как у вас есть (ключ / значение кортежей).
>>> l = [('a',1),('b',2)]
>>> d = dict(l)
>>> d
{'a': 1, 'b': 2}
Из документации :
Например, все они возвращают словарь, равный {"one": 1, "two": 2}:
dict(one=1, two=2) dict({'one': 1, 'two': 2}) dict(zip(('one', 'two'), (1, 2))) dict([['two', 2], ['one', 1]])
Кажется, все здесь предполагают, что список кортежей имеет однозначное соответствие между ключом и значением (например, у него нет дублированных ключей для словаря). Поскольку это первый вопрос, который возникает при поиске по этой теме, я отправляю ответ для более общего случая, когда нам приходится иметь дело с дубликатами:
mylist = [(a,1),(a,2),(b,3)]
result = {}
for i in mylist:
result.setdefault(i[0],[]).append(i[1])
print(result)
>>> result = {a:[1,2], b:[3]}