2013-07-16 2 views
0

у меня есть список dicts, что я Царапины от Google Scholar, который выглядит примерно так,Как получить сумму списка целых dicts

WRT_Citations = {Citations: 201, year: 2008, Title: Something, Author: Authors, Url: Url} {Citations: 108, year: 2006, Title: Something, Author: Authors, Url: Url}{Citations: 100, year: 2009, Title: Something, Author: Authors, Url: Url} 

Я положил его в этот цикл, чтобы сделать его более упорядоченный.

for Citations in Wrt_Citations: 
     print "Print Citations ", Citations 

, который дает более упорядоченный список,

output = {Citations: 201, year: 2008, Title: Something, Author: Authors, Url: Url} 
{Citations: 108, year: 2006, Title: Something, Author: Authors, Url: Url} 
{Citations: 100, year: 2009, Title: Something, Author: Authors, Url: Url} 

Я хочу, чтобы получить общее количество цитат, т.е. 201 + 108 + 100 = 409. Я был в состоянии получить Citations индивидуально, делая,

Cites = dict.values(Citations)[0] 
print cites = 201 
       108 
       100 

Так что я попытался с помощью SUM (dict.values ​​(Citations) [0]), чтобы получить общее количество ссылок, но это просто дать TypeError: 'INT' объект не итерацию.

Любая помощь была бы с удовольствием исключена, я преподавал свое «я», через tril и error python последние несколько недель, поэтому некоторые из терминов, которые я не буду сожалеть заранее, о, список был отсортирован дважды, а дубликат удалены также просто, чтобы вы знали.

+0

'Citations.values ​​() [0]' будет более того. Или еще лучше, 'Цитаты ['Цитаты']' и получить доступ к значению по ключу. –

+0

Обратите внимание, что ваш образец кода в вашем сообщении недействителен Python; в вашем списке отсутствуют скобки '[...]', у ваших ключей нет кавычек и т. д. Пожалуйста, не торопитесь опубликовать что-то, что мы все можем запустить в наших локальных копиях Python, что значительно облегчит вам помощь. –

ответ

2

Используйте выражение генератора, чтобы перебрать все ваши цитируемости словарей:

sum(d['Citations'] for d in WRT_Citations) 

Обратите внимание, что использование dict.values(Citations)[0] является очень окольным способом сказать Citations.values()[0], что является неверным и ненадежным способом сказать Citations['Citations'] (доступ значение, связанное с ключом 'Citations' в словаре, на которое ссылается имя Citations).

+0

Спасибо очень ясное объяснение. :) – Totothejuggler

2

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

WRT_Citations = [ 
    {'Citations': 201, 'year': 2008, 'Title': 'Something', 'Author': 'Authors', 'Url': 'Url'}, 
    {'Citations': 108, 'year': 2006, 'Title': 'Something', 'Author': 'Authors', 'Url': 'Url'}, 
    {'Citations': 100, 'year': 2009, 'Title': 'Something', 'Author': 'Authors', 'Url': 'Url'}] 

total_citations = sum(d['Citations'] for d in WRT_Citations) 
# 409 
+0

Извините за плохую структуру, первое сообщение на Stackoverflow, так что не совсем уверен в формате, спасибо, что отлично поработал :) – Totothejuggler