尝试对字典键排序时发生TypeError

缺口

我正在学习使用字典,并具有这样的结构:

DATA = {
    'ATL': {
        '2019': {
            'status': 'inactive',
            'abbr': 'ATL',
            'city': 'Atlanta'},
        '2016': {
            'status': 'active',
            'abbr': 'ATL',
            'city': 'Atlanta'},
        '2018': {
            'status': 'inactive',
            'abbr': 'ATL',
            'city': 'Atlanta'},
        '2017': {
            'status': 'active',
            'abbr': 'ATL',
            'city': 'Atlanta'}
        }
    }

这是按年份排序的一种尝试:

sorted_keys = sorted(DATA['ATL'].keys())

每当我得到TypeError: '<' not supported between instances of 'int' and 'str'当我打印键时,它只返回我认为是“ int”的年份,对吗?由于我刚开始使用dict,因此我很清楚dict的结构可能存在问题,但是非常困难。任何帮助,将不胜感激。

亚图

首先请注意,如果要按键对实际词典进行排序,则不仅要对键进行输入,还要对sorted整个词典进行输入。

DATA.items()将返回key/value元组。在这种情况下,您必须指定要根据哪些条件进行排序。为此,您可以在中使用key参数sorted

dict(sorted(DATA['ATL'].items(), key=lambda x: int(x[0])))

{'2016': {'status': 'active', 'abbr': 'ATL', 'city': 'Atlanta'},
 '2017': {'status': 'active', 'abbr': 'ATL', 'city': 'Atlanta'},
 '2018': {'status': 'inactive', 'abbr': 'ATL', 'city': 'Atlanta'},
 '2019': {'status': 'inactive', 'abbr': 'ATL', 'city': 'Atlanta'}}

另请注意,建议将强制转换为int,否则排序过程将按字典顺序进行,在这种情况下这可能不是问题,但这样做通常更安全(不确定在此处理的年份范围,但按字典顺序排序会产生意外结果,例如950> 2019)

这也可以防止出现错误,这似乎是由于键中混合了数据类型而导致的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章