2016-07-02 4 views
2

У меня есть список, как этотСоздание списка словаря

list = [('a', 3418), ('b', 3544), ('c', 1153), ('d', 2155), ('e', 2254), ('f', 2654), ('g', 2982), ('h', 3267), ('i', 3056), ('j', 820), ('k', 2987)] 

и мне нужно получить словарь, как это:

dictionary = {'a' : 3418, 'b' : 3544, 'c' : 1153} 

попытался с помощью

dict = {k:v for k,v in (x.split(',') for x in list) } 

но получаю ошибку

AttributeError: 'tuple' object has no attribute 'split'

ответ

3

Самый простой способ:

In [1]: x = [('a', 3418), ('b', 3544), ('c', 1153), ('d', 2155), ('e', 2254), ('f', 2654), ('g', 2982), ('h', 3267), ('i', 3056), ('j', 820), ('k', 2987)] 

In [2]: dict(x) 
Out[2]: 
{'a': 3418, 
'b': 3544, 
'c': 1153, 
'd': 2155, 
'e': 2254, 
'f': 2654, 
'g': 2982, 
'h': 3267, 
'i': 3056, 
'j': 820, 
'k': 2987} 

Из dict строку документации:

class dict(object) 
| dict() -> new empty dictionary 
| dict(mapping) -> new dictionary initialized from a mapping object's 
|  (key, value) pairs 
| dict(iterable) -> new dictionary initialized as if via: 
|  d = {} 
|  for k, v in iterable: 
|   d[k] = v 
0

Самый простой способ, имхо, было бы использовать словарь понимание:

>>> l = [('a', 3418), ('b', 3544), ('c', 1153), ('d', 2155), ('e', 2254), ('f', 2654), ('g', 2982), ('h', 3267), ('i', 3056), ('j', 820), ('k', 2987)] 
>>> d = {x[0] : x[1] for x in l} 
>>> d 
{'a': 3418, 'c': 1153, 'b': 3544, 'e': 2254, 'd': 2155, 'g': 2982, 'f': 2654, 'i': 3056, 'h': 3267, 'k': 2987, 'j': 820} 
Смежные вопросы