擅长:python、mysql、java
<p>因为我们请求的范围是<code>chr</code>和<code>Counter</code></p>
<pre><code>l = ['A', 'B', 'A-E', 'a', 'A;e', 'B;e', 'A;B', 'C A', 'As']
seq = [[chr(y) for y in range(ord(x.split('-')[0]), ord(x.split('-')[1]) + 1)] if '-' in x else re.split('\s|\;',x) for x in l ]
out = Counter(x for xs in seq for x in set(xs))
Out[400]: Counter({'A': 5, 'B': 4, 'D': 1, 'C': 2, 'E': 1, 'a': 1, 'e': 2, 'As': 1})
</code></pre>
<p>或者,如果剂量不是平均范围,我们可以简单地</p>
<pre><code>seq = [ re.split('\s|\;|\-',x) for x in l ]
Counter(x for xs in seq for x in set(xs))
Out[402]: Counter({'A': 5, 'B': 3, 'E': 1, 'a': 1, 'e': 2, 'C': 1, 'As': 1})
</code></pre>