2013-08-21 2 views
0

Я ищу простой способ преобразования списка в словарь. У меня есть простой список:Python 3: преобразовать список в словарь

leet =['a','4','b','l3','c','(','d','[)','e','3','g','6','l','1','o','0','s','5','t','7','w','\/\/'] 

, который я хочу легко преобразовать в словарь. Я попытался с помощью defaultdict, но я не совсем понимаю, что он делает (я нашел этот код в предыдущем ответе):

>>> from collections import defaultdict 
>>> dic = defaultdict(list) 
>>> for item in leet: 
    key ="/".join(item[:-1]) 
    dic[key].append(item[-1]) 


>>> dic 
defaultdict(<class 'list'>, {'\\:/:\\': [], '': ['a', '4', 'b', 'c', '(', 'd', 'e', '3', 'g', '6', 'l', '1', 'o', '0', 's', '5', 't', '7', 'w'], 'l': ['3'], '[': [')'], '\\///\\': ['/']}) 

В конце концов, я хочу прочитать в данных из текстового файла (построчно line) в список и конвертировать в словарь для остальной части простой программы. Я ищу прямой способ достичь этого.

Благодаря

+4

Когда вы говорите «новообращенного в словарь "- что вы имеете в виду? Что станет ключами, какими станут ценности? Является ли список '[ключ, значение, ключ, значение, ...]' или какой-либо другой strucutre? Вы хотите подсчитать предметы? –

+2

может дать реальный простой пример ввода и ожидаемого результата, чтобы мы знали, чего вы хотите ... – Sheena

+0

Извините, я не стал более ясным. Я просто хочу передать непосредственно [ключ: значение, ключ: значение, ..] – user2127168

ответ

2

Не уверен, что вы собираетесь вниз правильный путь с defaultdict, преобразовать в Словаре, группируя в пар, а затем использовать dict.get для удовлетворения, когда это не ключ соответствия:

leet =['a','4','b','l3','c','(','d','[)','e','3','g','6','l','1','o','0','s','5','t','7','w','\/\/'] 

lookup = dict(zip(*[iter(leet)] * 2)) 
text = 'how are you?' 
blah = ''.join(lookup.get(ch, ch) for ch in text) 
# h0\/\/ 4r3 y0u? 
+0

Спасибо, что делает именно то, что я хочу сделать. Просто небольшая проблема - ваш код выше возвращает «\/\ /» для «w», но мой дает мне «\\/\\ /» - любые идеи? – user2127168

+0

@ user2127168 его нет - используйте 'print blah', и вы увидите, что дополнительный черный слэш предназначен исключительно для репрезентативных целей и на самом деле не является вашей строкой ... Может быть, идея сделать это' r ' \/\/', чтобы сделать более очевидным, что обратная косая черта не для escape-символа –

+0

Ooops! Я должен был это осознать - спасибо! Все еще учусь! – user2127168

-1
components_dict = dict(((lambda y: y['id'])(y), y) for y in components) 

компонентных объектов следующим образом:

{"id":1234, "name":"xxx"} 
Смежные вопросы