python - 按多个值对字典列表进行排序

标签 python sorting dictionary

<分区>

我有以下指令

tempdata = {'logs': [
    {'starttime':'901',
     'time':'5'
     },
    {'starttime':'902',
     'time':'3'
     },
    {'starttime':'900',
     'time':'2'
     },    
    {'starttime':'901',
     'time':'2'
     },
    {'starttime':'905',
     'time':'1'
     },
    {'starttime':'904',
     'time':'1'
     }
]
}

我想主要按开始时间 排序。我完美地做到了:

 tempdata['logs'] = sorted(tempdata['logs'],key=lambda k: k['starttime'])

但是现在,我也想按时间对它们进行排序。

预期输出:

tempdata = {'logs': [
    {'starttime':'900',
    'time':'2'
    },
    {'starttime':'901',
     'time':'2'
     },
    {'starttime':'901',
     'time':'5'
     },
    {'starttime':'902',
     'time':'3'
     },
    {'starttime':'904',
     'time':'1'
     },
    {'starttime':'905',
     'time':'1'
     }
]
}

我怎样才能完成这个任务?我已经查找了 sorted(),但找不到我要找的东西。

最佳答案

使用元组作为键对它们进行排序,如下所示:

tempdata['logs'] = sorted(tempdata['logs'],
                          key=lambda k: (k['starttime'], k['time']))

元组按顺序按每个元素进行比较。

作为旁注,通过这种方式将值作为字符串而不是数字进行比较。不知道这是否与您相关。

关于python - 按多个值对字典列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38789544/

相关文章:

java - Java 中的选择排序,我可以如何改进代码?

java - 从一个列表创建多个列表(按特定字段对列表的对象进行分组)

c++ - 如何正确处理 upper_bound 的迭代器

python - 参数解包是否使用迭代或项目获取?

python - NLTK文档分类

python - 使用 Django 提供动态生成的图像

python - 连接到服务器上运行的 virtualenv/django 时如何解决 ERR_CONNECTION_REFUSED

c - 数学。排序。 "n * (n + 1)/2"总是小于 "n * n"吗?

algorithm - 按开始时间对完成的请求进行排序

c# - 对象字典不适用于 JSON