Python - 提高我的算法速度

标签 python algorithm performance dictionary optimization

我需要在 Python 中创建一个类似于此的多层字典

    "objects": {
    "LOCATION 1": {
        "EMPLOYEE 1": {
            "19": 3,
            "20": 0,
            "21": 0,
            "40": 4
        },
        "EMPLOYEE 2": {
            "24": 0,
            "42": 11,
            "43": 13
        }
    },...
      ...
      ...

这是一个字典,显示每个员工每周按位置记录的工作时间。

典型的记录遵循这种格式 [LOCATION,EMPLOYEE,HOURS_LOGGED,DATE],对于每条记录,我从日期中得出周数。

我目前使用 10,000 条记录大约需要 10 秒的算法如下

        result={}
        if (location in result):
            if (engineer in result[location]):
                if (week in result[location][engineer]):
                    result[location][engineer][week]=result[location][engineer][week]+laborminutes
                else:
                    result[location][engineer][week]=laborminutes
            else:
                result[location][engineer]={week:laborminutes}
        else:
            result[location]={engineer:{week:laborminutes}}

无论如何我可以改进

最佳答案

collections.defaultdict提供一种方式:

from collections import defaultdict

result = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
result[location][engineer][week] += laborminutes

collections.defaultdictdict 的子类。我们定义了一个dict(dict(dict(int)))的嵌套结构。由于 int 的默认值为 0,我们可以轻松地通过 laborminutes 给定任意键 locationengineer 来增加值,

关于Python - 提高我的算法速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48643921/

相关文章:

python - Pandas :组合无重复的列/组合后找到唯一的单词

c++ - 如何仅使用循环/控制语句和两个 cout 语句创建倒三角形 : one that outputs '#' and one that outputs '\n'

c++ - 计算相差 K 的数字的总数

sql - Postgres 最小函数性能

javascript - 在构建过程中将多个 .js 文件合并为一个

javascript - 如果我将 JavaScript 保留在底部或将 JavaScript 保留在 document.ready 中的 <head> 中,两者是一回事吗?

python - 中给出的大多数数字的意外输出。(Python)

python - openshift:无法为 python 应用程序安装 lxml

python - 将字符串日期转换为时间戳并返回 python

algorithm - 均匀奖品分配