2015-01-13 4 views
2

Я знаю о некоторых из вопросов ответили здесь на SO о dict(list) т.е.Преобразовать список 2 элемента в Словаре

l = [['a',1] ['b',2]] 

и сделать dict(l) тогда мы получим:

{'a': 1, 'b': 2} 

Но как сделать список с 2-мя элементами

l = ['a',1] 

стать словаря, такие как:

{'a':1} 

с помощью функции dict?

+5

Вы должны использовать 'Dict ([L])' (или 'Dict ((л))') – fredtantini

+0

@fredtantini предполагая, что в списке есть только одна пара слов/значение словаря. – Scironic

+2

Сколько элементов? –

ответ

3

dict ожидает Iterable из двух элементов итерируемых, так что вам нужно будет поставить l в списке:

>>> l = ['a',1] 
>>> dict([l]) 
{'a': 1} 
>>> 

Обратите внимание, что вы можете также использовать кортеж:

>>> l = ['a',1] 
>>> dict((l,)) 
{'a': 1} 
>>> 
+0

Предполагается, что существует только одна пара ключей/значений. – Scironic

+0

@MartijnPieters - я указал его в вопросе - Преобразовать 2 списка элементов в dict –

+0

@TarunSapra: и несколько человек (включая меня) пропустили это. Я отредактировал эту деталь в вашем вопросе. –

0

это работает для нескольких элементов в списке

>>> l = ['a',1,'b',2] 
>>> i = [(l[i],l[i+1]) for i in range(0,len(l),2)] 
>>> dict(i) 
{'a': 1, 'b': 2} 
1

Для одного элемента dict([l]) будет работать. Для нескольких пар ключ/значение в уплощенной списке, вы можете использовать zip():

In [5]: l = ['a', 1, 'b', 2] 

In [6]: dict(zip(l[::2], l[1::2])) 
Out[6]: {'a': 1, 'b': 2} 
+0

Эй, какая конгруэнтность ... Даже я использовал '['a', 1, 'b', 2]' –

+0

@BhargavRao: Это пример в вопросе, не так ли? :-) – NPE

+0

Woah ... Да, я этого не видел :) –

Смежные вопросы