<p>欢迎来到Python!在</p>
<p>Python有许多处理常见问题的有用模块。在</p>
<p>要解决您的问题,您可以从<code>collections</code>导入<code>Counter</code>:</p>
<pre><code>from collections import Counter
>>> molecule = '''ATOM 1 N ARG A 1 0.609 18.920 11.647 1.00 18.79 N
ATOM 2 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 C
ATOM 2 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 C'''
>>> Counter(line.split()[-1] for line in molecule.splitlines())
Counter({'C': 2, 'N': 1})
</code></pre>
<p><code>line.split()[-1]</code>获取行的最后一个单词,以防元素具有较长的化学符号,<code>splitlines()</code>将这些行彼此分隔开来。在</p>
<p><code>Counter</code>可以相互加减,这可能对您有用:</p>
^{pr2}$
<p>这不仅会给你不同原子的数量,也会给你整个分子出现的数量。
不同原子的数量可以通过取<code>len</code>的<code>Counter</code>来检索:</p>
<pre><code>>>> len(Counter(line.split()[-1] for line in molecule.splitlines()))
2
</code></pre>
<p>更详细的例子:</p>
<pre><code>molecule = '''ATOM 1 N ARG A 1 0.609 18.920 11.647 1.00 18.79 N
ATOM 2 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 C
ATOM 3 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 Se
ATOM 4 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 Pu
ATOM 5 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 Pu
ATOM 6 CA ARG A 1 0.149 17.722 10.984 1.00 13.68 C'''
>>> Counter(line.split()[-1] for line in molecule.splitlines())
Counter({'C': 2, 'N': 1, 'Pu': 2, 'Se': 1})
>>> len(Counter(line.split()[-1] for line in molecule.splitlines()))
4
</code></pre>