gpt4 book ai didi

python - 在 python 中使用大型字典? (性能和崩溃)

转载 作者:行者123 更新时间:2023-12-03 17:16:07 24 4
gpt4 key购买 nike

目标:创建一个 python 类,它将接收字符串示例“maple”并将其转换为相应的物种代码“AC”。

问题:我创建了一个字典,其中包含所有字符串输入和它们对应的用于翻译的物种代码。但是我想不出一种在没有 python 崩溃的情况下实现字典的方法。字典非常大(大约有 4000 个条目,格式为:{'common name example1': 'species code example1', 'common name example2':'species code example2', ... },如下所示。我认为我的代码在理论上可行,但它占用了大量内存,导致 python 不断崩溃。

这是我的代码:

import string

class exportSpec:

def __init__(self, exportSpecobj):
self.set(self.sani(exportSpecobj))
def get(self):
return self.exportSpecobj
def set(self, exportSpecobj_pre_sani):
self.exportSpecobj = exportSpecobj_pre_sani

def puncremove(self, common):
for c in string.punctuation:
common = common.replace(c,"")
return common

def lower(self, common):
common = self.lower()
return common

def codeChange(self, saniCode):
codeDict = {'balsam fir':'ABBA', 'white fir':'ABCO', 'maple':'AC', 'freeman maple':'ACFR', 'amur maple':'ACGI', 'rocky mountain maple':'ACGL', 'boxelder':'ACNE', 'norway maple':'ACPL', 'red maple':'ACRU', 'silver maple':'ACSA1', 'sugar maple':'ACSA2', 'tatar maple':'ACTA', 'ohio buckeye':'AEGL', 'horsechestnut':'AEHI', 'serviceberry':'AM', 'broadleaf deciduous large':'BDL OTHER', 'broadleaf deciduous medium':'BDM OTHER', 'broadleaf deciduous small':'BDS OTHER'}

# the dictionary^^ is much bigger but I just showed the first 20ish values to show my code

check = codeDict.has_key(saniCode)
if check == "True":
print("New code was found")
return codeDict[saniCode]
else:
print("Error finding code in Dictionary")
print(saniCode)
output = 0
return output

def sani(self, exportSpecObj):
if exportSpecObj is None:
output = 0
return output
else:
exportSpecObjlcpr = self.lower(self.puncremove(exportSpecObj))
saniCode = codeChange(exportSpecObjlcpr)
return saniCode

所以我认为我的代码在理论上有效。输入进入并使用 lower 和 puncremove 方法进行清理,以删除标点符号并转换为小写,以便可以在字典中找到输入,以便从键输入中作为字典中找到的值返回。

如果有一种更简单的方法可以做到这一点,而无需使用也可以使用的字典,但这似乎是我能想到的唯一方法。通用名称和相应的物种代码最初保存在一个 excel 文件中,我由此创建了字典。

我只是在类之外没有太多编码经验,而且对程序的内存和性能知之甚少。很感谢任何形式的帮助。谢谢你。

最佳答案

使用 Pandas 。

例子:

import pandas

dictionary = {}
pandas.DataFrame.from_dict(dictionary, orient='index')

文档: http://pandas.pydata.org/pandas-docs/stable/

关于python - 在 python 中使用大型字典? (性能和崩溃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36691836/

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