2016-09-24 3 views
1

У меня есть следующий список списка:Как преобразовать список списка в словарь в Python?

website=[["Ram"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"], 
    ["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"], 
    ["linkedin"]] 

я хотел бы получить на выходе, как:

webdict={"Ram":1,"google":3,"yahoo":3,"linkedin":3,"facebook":2,"twitter":2} 
+0

Спасибо всем за решение моей проблемы. Я очень новичок в Python. Надеюсь, вы, ребята, тоже поможете мне в моих программах. –

ответ

0
website=[["Ram"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"],["linkedin"]] 

print dict([(i[0], website.count(i)) for i in website]) 

выхода:

{'google': 3, 'twitter': 2, 'Ram': 1, 'yahoo': 3, 'linkedin': 3, 'facebook': 2} 

Чтобы узнать больше о списках см. doc

  • Раздел "5.1.4. List Comprehensions "будет объяснено заявление for.
  • Раздел" 5.1. Подробнее о списках»будет объяснить website.count(i)
0

Существует класс называется Counter, который предназначен для таких задач, как это. Он унаследовал от словаря, поэтому просто заполнить детали, а затем распечатать результат

website=[["Ram"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"],["linkedin"]] 

from collections import Counter 
c = Counter() 
for item in website: 
    c[item[0]] += 1 

print c 
>>> Counter({'google': 3, 'yahoo': 3, 'linkedin': 3, 'twitter': 2, 'facebook': 2, 'Ram': 1}) 
0

Так как вы хотите, чтобы рассчитывать элементы, самый простой способ заключается в использовании collections.Counter из стандартной библиотеки. Аргумент Counter является выражением генератора, который извлекает первый (только) элемент для каждого из списка в website списке.

from collections import Counter 
website = [["Ram"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"],["linkedin"],["facebook"],["twitter"],["google"],["yahoo"],["linkedin"]] 
counter = Counter(o[0] for o in website) 
# Counter({'google': 3, 'yahoo': 3, 'linkedin': 3, 'twitter': 2, 'facebook': 2, 'Ram': 1}) 
Смежные вопросы