python - 二维嵌套字典是否比 python 中带有 if 语句的几个扁平字典更快?
问题描述
我正在尝试找到一个更好的计划将数据放入字典中。我会将我的数据存储在一个 python 文件中的字典中(称之为“DB.py”)。并在另一个文件中导入“DB.py”来计算这些数据。(所以围绕字典的键和值会有很多工作)。因为有几个字典(大约 5 个),我不知道嵌套到 2d 字典或将其展平为 1d 字典并使用 if 语句选择在计算程序中使用哪一个更快?
选择一:two_dimensional_dict = {1:{key:value, ...},2:{key:value}, ...}
选择二:
one_dimensional_dict1 = {key:value, ...}
one_dimensional_dict2 = {key:value, ...}
...
在计算程序中,我将有一个变量(称为“检查”)来引导程序他们应该找到哪个字典。
if check == 1:
# Do work with one-dimensional_dict1
elif check == 2:
# Do work with one-dimensional_dict2
...
所以,我只是想知道哪个更快?任何建议和想法都会非常有帮助!
解决方案
您可以使用 timeit 检查代码片段的时间
数据库.py
two_dimensional_dict = {1:{"key1": "value"},2:{"key2": "value"}}
one_dimensional_dict1 = {"key1": "value"}
one_dimensional_dict2 = {"key1": "value"}
>>> import timeit
>>> import db
>>> timeit.Timer('lambda :print(db.two_dimensional_dict[1]["key1"])').timeit()
0.06990942300035385
>>> timeit.Timer('lambda :print(db.one_dimensional_dict1["key1"])').timeit()
0.07525096900099015
对我来说 two_dimensional_dict 更快,但对你来说可能会有所不同
推荐阅读
- javascript - 在 json-server 中搜索
- python-3.x - 如何使用 .p12 证书对 rest api 进行身份验证
- c++ - 为什么 std::shuffle 采用右值引用?
- jquery - Jquery bind('beforeunload') 在 Chrome 弹出窗口中不起作用
- google-app-maker - 如何添加用户以在 google App Maker 项目上进行协作
- c# - C# DateTime 格式及比较
- django - 在 django 上设计和显示格式正确的数据。
- hadoop2 - 当我手动更改复制因子时会发生什么变化?
- angular - 后台实时进度
- c++ - 动态规划 - 原始计算器