Python'da şu anda bir tuple listesini sözlüğe nasıl dönüştürüyorum:
l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}
Daha iyi bir yol var mı? Görünüşe göre bunu yapmak için tek hat olmalı.
Python'da şu anda bir tuple listesini sözlüğe nasıl dönüştürüyorum:
l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}
Daha iyi bir yol var mı? Görünüşe göre bunu yapmak için tek hat olmalı.
Yanıtlar:
dict()
Doğrudan tuple listesini aramanız yeterli
>>> my_list = [('a', 1), ('b', 2)]
>>> dict(my_list)
{'a': 1, 'b': 2}
dict
, aynı ada sahip yerleşik Python'u gölgeleyen adlı bir değişkene sahip olmanızdır . Bunu asla yapmamalısın.
dict
, hatayı aldığım yerden değişken adı olarak kullanmış . Tekrar teşekkürler.
dict
Yapıcı bunu (anahtar / değer tuples) sahip tam olarak girişini kabul eder.
>>> l = [('a',1),('b',2)]
>>> d = dict(l)
>>> d
{'a': 1, 'b': 2}
Gönderen belgeler :
Örneğin, bunların tümü {"bir": 1, "iki": 2} 'ye eşit bir sözlük döndürür:
dict(one=1, two=2) dict({'one': 1, 'two': 2}) dict(zip(('one', 'two'), (1, 2))) dict([['two', 2], ['one', 1]])
Görünüşe göre buradaki herkes tuple listesinin anahtar ve değerler arasında bire bir eşleşmeye sahip olduğunu varsayıyor (örneğin, sözlük için yinelenen anahtarlara sahip değil). Bu konuyla ilgili ilk soru bu olduğundan, yinelenenlerle uğraşmamız gereken daha genel bir durum için bir yanıt gönderiyorum:
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]}