我正在开发一个项目,该项目涉及使用 igraph 并从 sqlite3 数据库读取数据。
以下是我的数据库中的列名称 -
['id', 'title', 'authors', 'year', 'pub_venue', 'ref_id', 'ref_num', 'abstract']
其中 id 是整数类型,ref_id
是具有逗号分隔 ref_ids 的文本。
最终目标是使用上述数据在 igraph 中创建一个图,其中 id 是顶点值,ref_id 中的 ids 将用于创建边。 如果我在 igraph 中枚举每个 id 来创建顶点,然后再次枚举 id 来创建边,那么性能将会受到严重影响。
因此决定使用 row['id']
作为键和 row['ref_id']
作为值将元组列表转换为字典,并使用该字典来创建igraph 中的图表。
在下面我也遇到错误 -
b = {}
for row in list(res):
key = row['id']
val = 0
if row['ref_id'] != None:
val = map(int, row['ref_id'].split(","))
b[key] = val
ValueError: invalid literal for int() with base 10: ''
实现这一目标的最快方法是什么?为什么我会遇到上述错误?
如果查询需要更多详细信息,请告诉我。
最佳答案
该错误意味着 row['ref_id'].split(";")
的元素之一不可转换为整数。特别是,它是空 ''
根据错误。
正如其他答案所暗示的那样,这可能是由空格引起的。但我也注意到,在文本中你说用逗号分割,但在代码中你是根据分号(“;”)分割的?
实际上,您只需打印 row['ref_id'].split(";")
的内容就应该能够弄清楚这一点。在尝试将其转换为 int 之前。另外,作为一个小挑剔,只需替换 row['ref_id']
与 key
因为你已经定义了它..
关于python - 在Python中将元组转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570073/