<p>首先,让我们将其转换为更友好的格式。您说<code>id_citations</code>对于每篇论文都是唯一的,所以我们将使用它作为哈希表/dict键</p>
<p>然后,我们可以将每个<code>id_citation</code>映射到它显示的bib dict和作者,作为元组列表<code>(bib, author_name)</code></p>
<pre><code>author_list = ['Zoe Pikramenou', 'James H. R. Tucker', 'Alison Rodger', 'Timothy Dafforn']
bibs = {}
for author_name in author_list:
search_query = scholarly.search_author(author_name)
for bib in search_query:
bib = bib.fill()
bibs.setdefault(bib['id_citations'], []).append((bib, author_name))
</code></pre>
<p>此后,我们可以根据附加到<code>bibs</code>中的作者数量对键进行排序:</p>
<pre><code>most_cited = sorted(bibs.items(), key=lambda k: len(k[1]))
# most_cited is now a list of tuples (key, value)
# which maps to (id_citation, [(bib1, author1), (bib2, author2), ...])
</code></pre>
<p>和/或将该列表筛选为只有三个或更多外观的引用:</p>
<pre><code>cited_enough = [tup[1][0][0] for tup in most_cited if len(tup[1]) >= 3]
# using key [0] in the middle is arbitrary. It can be anything in the
# list, provided the bib objects are identical, but index 0 is guaranteed
# to be there.
# otherwise, the first index is to grab the list rather than the id_citation,
# and the last index is to grab the bib, rather than the author_name
</code></pre>
<p>现在我们可以从那里检索论文的标题:</p>
<pre><code>paper_titles = [bib['bib']['title'] for bib in cited_enough]
</code></pre>