擅长:python、mysql、java
<p>有几种不同的方法可以做到这一点。如果您知道您的列表中都有以某些数字结尾的字符串形式的条目,并且您希望以<code><non_numerical_string>: <integer></code>的形式将这些条目拆分为键和值,那么以下是一种不使用正则表达式的方法:</p>
<pre><code>def d(original_string):
data_dict = {}
for item in original_string.split(', '):
for t in enumerate(item):
if t[1].isdigit():
split_pos = t[0]
break
data_dict[item[:split_pos]] = int(item[split_pos:])
return data_dict
data = "electron1, gamma5, proton43, boson98"
print(d(data))
</code></pre>
<p>在原始示例中,<code>n = int(input())</code>接受用户输入并尝试将其全部转换为整数。稍后,当您在字符串上使用<code>.split()</code>时,会用空格将其分开,但这意味着逗号是新列表中单个字符串的一部分。因此,传入“<code>(", ")</code>”可以得到所需的拆分(尽管这意味着原始字符串的所有内容都必须用逗号和空格隔开!)。在</p>
<p><code>enumerate(item)</code>部分接受一个类似<code>boson98</code>的字符串,并返回一个可以像列表<code>[(0, 'b'), (1, 'o'), (2, 's'), (3, 'o'), (4, 'n'), (5, '3'), (6, '8')]</code>处理的对象。虽然我个人更喜欢regexp的简单性。在</p>