我在MySql DB中有一个表,我想将它加载到python中的字典。表格列如下:
id,url,tag,tagCount
tagCount是某个URL重复标记的次数。所以在这种情况下我需要一个嵌套字典,换句话说是字典字典,来加载这个表。因为每个url有几个标签,其中有不同的tagCounts。我使用的代码是:(整个表大约是22,000条记录)
cursor.execute( ''' SELECT url,tag,tagCount
FROM wtp ''')
urlTagCount = cursor.fetchall()
d = defaultdict(defaultdict)
for url,tag,tagCount in urlTagCount:
d[url][tag]=tagCount
print d
首先,我想知道这是否正确..如果这是为什么需要这么多时间?有没有更快的解决方案?我正在将这个表加载到内存中以便快速访问以摆脱慢速数据库操作的麻烦,但是由于速度慢这已经成为瓶颈本身,它甚至比DB访问慢得多。有人帮忙吗?谢谢
发布于 2018-09-12 15:52:33
也许你可以尝试使用正常的dicts和tuple键
d = dict()
for url,tag,tagCount in urlTagCount:
d[(url, tag)] = tagCount
在任何情况下你都尝试过:
d = defaultdict(dict)
代替
d = defaultdict(defaultdict)
发布于 2018-09-12 16:49:08
在为它们分配键值之前,您需要确保字典(以及每个嵌套字典)存在。为此目的使用setdefault很有帮助。你最终得到这样的东西:
d = {}
for url, tag, tagCount in urlTagCount:
d.setdefault(url, {})[tag] = tagCount
https://stackoverflow.com/questions/-100000755
复制相似问题