gpt4 book ai didi

python - 如何从原始数据字符串制作字典

转载 作者:行者123 更新时间:2023-12-03 18:28:48 25 4
gpt4 key购买 nike

基本上我需要从一串数据创建一个字典

鉴于:

data = "electron1, gamma5, proton43, boson98, ..."
d(data)会导致:
{'electron':1, 'gamma':5, 'proton':43, 'boson':98, ...}

我当前的代码显示“base 10 ...”的错误消息
def d(n):
pair = dict()
for i in range(0,n):
word = input().split()
key = word[0]
value = word[1]
pair[key]=value
print(pair)

n = int(input())
d ={}
for i in range(n):
text = input().split()
d[text[0]] = text[1]
print(d)

最佳答案

您可以使用正则表达式和 generator expression 来做到这一点。喜欢:

代码:

END_NUMS_RE = re.compile(r'^(\D+)(\d+)$')
dict(END_NUMS_RE.match(x.strip()).groups() for x in data.split(','))

测试代码:
import re
END_NUMS_RE = re.compile(r'^(\D+)(\d+)$')
data = "electron1, gamma5, proton43, boson98"
print(dict(END_NUMS_RE.match(x.strip()).groups() for x in data.split(',')))

结果:
{'electron': '1', 'gamma': '5', 'proton': '43', 'boson': '98'}

但!正则表达式:

所以对于那些担心使用正则表达式的人:

让我们在这里对正则表达式答案与投票第二多的答案进行基准测试:
import re
END_NUMS_RE = re.compile(r'^(\D+)(\d+)$')
data = "electron1, gamma5, proton43, boson98"

def method1():
return dict(END_NUMS_RE.match(x.strip()).groups()
for x in data.split(','))

def method2():
l = data.split(',')
return {
''.join(
[x for x in item if not x.isdigit()]):
int(''.join([x for x in item if x.isdigit()])) for item in l
}


from timeit import timeit
print(timeit(method1, number=10000))
print(timeit(method2, number=10000))

计时结果:
0.05789754982012146
0.10536237238963242

正则表达式的答案是快两倍。

关于python - 如何从原始数据字符串制作字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com