首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数据库表加载到Python中的嵌套字典中

将数据库表加载到Python中的嵌套字典中
EN

Stack Overflow用户
提问于 2018-09-12 07:32:37
回答 2查看 0关注 0票数 0

我在MySql DB中有一个表,我想将它加载到python中的字典。表格列如下:

代码语言:javascript
复制
id,url,tag,tagCount

tagCount是某个URL重复标记的次数。所以在这种情况下我需要一个嵌套字典,换句话说是字典字典,来加载这个表。因为每个url有几个标签,其中有不同的tagCounts。我使用的代码是:(整个表大约是22,000条记录)

代码语言:javascript
复制
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访问慢得多。有人帮忙吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-09-12 15:52:33

也许你可以尝试使用正常的dicts和tuple键

代码语言:javascript
复制
d = dict()

for url,tag,tagCount in urlTagCount:
    d[(url, tag)] = tagCount

在任何情况下你都尝试过:

代码语言:javascript
复制
d = defaultdict(dict)

代替

代码语言:javascript
复制
d = defaultdict(defaultdict)
票数 0
EN

Stack Overflow用户

发布于 2018-09-12 16:49:08

在为它们分配键值之前,您需要确保字典(以及每个嵌套字典)存在。为此目的使用setdefault很有帮助。你最终得到这样的东西:

代码语言:javascript
复制
d = {}
for url, tag, tagCount in urlTagCount:
    d.setdefault(url, {})[tag] = tagCount
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档