У меня есть список, как:

x = ['user=inci', 'password=1234', 'age=12', 'number=33']

Я хочу преобразовать x в dict как:

{'user': 'inci', 'password': 1234, 'age': 12, 'number': 33}

Какой самый быстрый способ?

1
nanci 10 Янв 2017 в 11:54

3 ответа

Лучший ответ

Вы можете сделать это с одним простым вкладышем:

dict(item.split('=') for item in x)

Понимания списка (или выражения генератора) обычно быстрее, чем использование map с lambda, и обычно считаются более читабельными, см. здесь .

4
Community 23 Май 2017 в 12:33

Эталонный тест

dict и map подход (f1)

dict(map(lambda i: i.split('='), x))

Наивный подход (f2)

d = dict()
for i in x:
    s = x.split("=")
    d[s[0]] = s[1]
return d

Только dict (f3)

dict(item.split('=') for item in x)

< Сильный > Сравнение

def measure(f, x):
    t0 = time()
    f(x)
    return time() - t0

>>> x = ["{}={}".format(i, i) for i in range(1000000)]

>>> measure(f1, x)
0.5690059661865234

>>> measure(f2, x)
0.5518567562103271

>>> measure(f3, x)
0.5470657348632812
2
Right leg 10 Янв 2017 в 09:32

dict(map(lambda i: i.split('='), x))

1
Lucas Moeskops 10 Янв 2017 в 09:14