0

我有一个从谷歌学者那里抓取的字典列表,看起来像这样,

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 循环中以使其更有条理。

    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。我已经能够单独获得引文,

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

所以我尝试使用 sum(dict.values(Citations)[0]) 来获取总引用,但这只是给出 TypeError: 'int' object is not iterable。

任何帮助都会很高兴地被排除在外,我一直在自学,过去几周通过 tril and error python 所以有些术语我不正确,请提前抱歉,哦,列表已经排序了两次,重复的也被删除了你知道。

4

2 回答 2

2

使用生成器表达式遍历所有引文字典:

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

请注意, usingdict.values(Citations)[0]是一种非常迂回的说法Citations.values()[0],这是一种不正确且不可靠的说法(访问与name 引用的字典中Citations['Citations']的键关联的值)。'Citations'Citations

于 2013-07-16T10:49:09.037 回答
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
于 2013-07-16T10:51:29.310 回答