【发布时间】:2018-03-31 12:51:44
【问题描述】:
我正在处理大量 url(来自计划),并且我将它们分类为嵌套的 defaultdict 结构,如下所示:
我的类别是:
- 选项:3 种可能性
- 季度:4 种可能性
- 周:52 种可能性
周的值应该是一个列表。
我的代码
def setup_urls(option):
urls = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
for quarter in range(1, 5):
for week in range( 1, 53):
// logic of computing url goes here
links[option][quarter][week].append(url)
return urls
输出
A list with multiple defaultdict in it.
[defaultdict( < function setup_urls. < locals > . < lambda > at 0x7fd30ed2d488 > , {
'option': defaultdict( < function setup_urls. < locals > . < lambda > . < locals > . < lambda > at 0x7fd3122a2158 > , {
1: defaultdict( < class 'list' > , {
45: [ url1, url2, url3, url4, url5 ]
}),
})
})]
我不想使用标准字典,因为大型数据集的效率很高。我必须存储大约 5000-10000 个网址。未来可能会在 100000 左右。
根据我自己的一些研究,defaultdict 的使用应该对性能有好处,但是 lambda 的使用似乎不是很 Pythonic。不确定是否有更好的解决方案,但这不是我的主要问题。
我目前如何通过这段代码访问所有 url,但感觉喜欢很多脏代码,特别是一点也不像 Pythonic。
for dict in result:
for quarter in dict.values():
for week in quarter.values():
for url in week.values():
print(url)
我想知道访问这些 url 以利用 map 功能的更好方法是什么? (这是存储 url 的最佳方式吗?)
【问题讨论】:
-
这一切都很好,没有什么可以显着改进的。这个问题可能更适合codereview.stackexchange.com
标签: python list dictionary