我正在做一个项目,涉及到使用igraph和从sqlite3数据库读取数据。
以下是我的数据库中的列名-

['id', 'title', 'authors', 'year', 'pub_venue', 'ref_id', 'ref_num', 'abstract']

其中id是整数类型,ref_id是具有逗号分隔的ref_id的文本。
最终目标是使用上述数据在iggraph中创建一个图,其中id是一个顶点值,ref_id中的id将用于创建边。
如果我枚举每个id以在iggraph中创建顶点,然后再次枚举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:基为10的int()的文本无效:''
最快的方法是什么?为什么我能克服错误?
如果查询需要更多详细信息,请告诉我。

最佳答案

错误意味着row['ref_id'].split(";")的元素之一不能转换为整数。特别是,根据错误,它是空的。
这可能是由其他答案所暗示的空白引起的。但我也注意到,在文本中,你说用逗号分隔,而在代码中,你用分号(“;”)分隔?
实际上,在试图将其转换为int之前,您应该能够通过打印''的内容来解决这个问题。同样,作为一个小问题,只需将row['ref_id'].split(";")替换为row['ref_id'],因为您已经定义了它。。

关于python - 在python中将元组转换为字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33570073/

10-12 22:33