<p><em>代码.py</em>:</p>
<pre class="lang-py prettyprint-override"><code>#!/usr/bin/env python3
import sys
import requests
from lxml import etree
from pprint import pprint as pp
ARTICLE_URL = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&tool=PMA&id=29150897,29149862"
def main():
response = requests.get(ARTICLE_URL)
tree = etree.fromstring(response.content)
ids = tree.xpath("//MedlineCitation/PMID[@Version='1']")
titles = tree.xpath("//Article/ArticleTitle")
if len(ids) != len(titles):
print("ID count doesn't match Title count...")
return
result = {_id.text: {"title": title.text} for _id, title in zip(ids, titles)}
pp(result)
if __name__ == "__main__":
print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
main()
</code></pre>
<p><strong>注意事项</strong>:</p>
<ul>
<li>为了清晰起见,我对代码进行了一点结构化,并重命名了一些变量</li>
<li><em>ids</em>保存<em>PMID</em>节点的列表,而<em>titles</em>则保存(对应的)articletTitle</em>节点的列表(注意路径!)在</li>
<li>以所需格式将它们连接在一起的方法是使用<a href="https://www.python.org/dev/peps/pep-0274" rel="nofollow noreferrer">[Python]: PEP 274 Dict Comprehensions</a>,为了同时迭代2个列表,使用了<a href="https://docs.python.org/3/library/functions.html#zip" rel="nofollow noreferrer">[Python 3]: <strong>zip</strong>(<em>*iterables</em>)</a></li>
</ul>
<p><strong>输出</strong>:</p>
<blockquote>
<pre class="lang-py prettyprint-override"><code>(py35x64_test) c:\Work\Dev\StackOverflow\q47433632>"c:\Work\Dev\VEnvs\py35x64_test\Scripts\python.exe" code.py
Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32
{'29149862': {'title': 'Telemedicine as an effective intervention to improve '
'antibiotic appropriateness prescription and to reduce '
'costs in pediatrics.'},
'29150897': {'title': 'Determining best outcomes from community-acquired '
'pneumonia and how to achieve them.'}}
</code></pre>
</blockquote>