当前位置: 首页 > 知识库问答 >
问题:

python中嵌套dict和元组排序列表的输入验证

安毅
2023-03-14
{
    'Afghanistan': {
        'Gold': 0, 'Silver': 0, 'Bronze': 2, 'Total': 2
    }, 
    'Albania': {
        'Gold': 0, 'Silver': 0, 'Bronze': 0, 'Total': 0
    }, 
    'Algeria': {
        'Gold': 5, 'Silver': 4, 'Bronze': 8, 'Total': 17}
    }
}
[(1, 'Algeria', 17), (2, 'Afghanistan', 2), (3, 'Albania', 0)]
def rank_countries(dict1):
    if isinstance(dict1, dict):
        for i in dict1:
            if isinstance(dict1[i], dict):
                new_list = [(k, v['Total']) for k, v in dict1.items()]
                new_list=sorted(new_list, key= lambda tup: tup[1], reverse= True)   
                return new_list
                          
                             
    else:
        return 'Input must be a nested dictionary.'
[('Algeria', 17), ('Afghanistan', 2), ('Albania', 0)]

我得到了我想要的顺序,但我不知道如何添加每个元组开头的数字,这些数字声明了国家的等级。此外,我不确定嵌套字典的输入验证是否好,或者它是否只适用于第一个字典。

共有1个答案

司寇烨伟
2023-03-14

可以使用枚举将数字添加到结果中。

result = [('Algeria', 17), ('Afghanistan', 2), ('Albania', 0)]
print([(index, value) for index, value in enumerate(result, 1)])

出:

[(1, ('Algeria', 17)), (2, ('Afghanistan', 2)), (3, ('Albania', 0))]

我只是意识到索引数字应该和其他项目在同一个元组中。

result = [('Algeria', 17), ('Afghanistan', 2), ('Albania', 0)]
print([(index, *value) for index, value in enumerate(result, 1)])
[(1, 'Algeria', 17), (2, 'Afghanistan', 2), (3, 'Albania', 0)]
 类似资料:
  • 问题内容: 我具有以下数据结构(列表列表) 我希望能够 使用函数对列表重新排序,以便我可以按列表中的每个项目分组。例如,我希望能够按第二列分组(以便所有21列在一起) 使用函数仅显示每个内部列表中的某些值。例如,我想减少此列表,使其仅包含“ 2somename”的第四个字段值 所以列表看起来像这样 问题答案: 对于第一个问题,您应该做的第一件事是使用运算符模块中的itemgetter按第二个字段对

  • 问题内容: 我有类似的东西 并且需要具有: 非常感谢! 编辑:我想按subkey1进行排序,这之前还不清楚。 问题答案: 使用关键字表示功能和方法: 演示: 假定 所有 顶级词典都具有一个键,该键被假定为带有键的字典。 有关更多详细信息和技巧,请参见Python Sorting HOWTO 。

  • 问题内容: 我需要将列表排序为: 我已经使用了该函数,并且能够根据值进行排序…但是我无法按字母顺序进行排序,因为我需要按照数字的降序和字母的升序对列表进行排序数字具有相同的值。 问题答案: 使用元组作为浮点数为负的排序键可以反转顺序: 如果您不能进行求反(例如对字符串或字母值或非数字值),则可以利用Python sort函数稳定的事实,并分两步进行排序:

  • 我正在寻找一种在KnockoutJS中实现简单嵌套/可嵌套树结构的方法;它应该只允许两个级别。 到目前为止,我发现了这个(以及在SO上的一系列非常相似的方法): Knockout.js嵌套的可排序绑定 然而,在这个例子和其他例子中,“容器”不能成为“孩子”,反之亦然。 基本上,我正在寻找这样的结构:http://jsfiddle.net/uhVAW/2/ 也就是说,它最终将呈现一个具有两个级别的列

  • 本文向大家介绍Python中字典(dict)和列表(list)的排序方法实例,包括了Python中字典(dict)和列表(list)的排序方法实例的使用技巧和注意事项,需要的朋友参考一下 一、对列表(list)进行排序 推荐的排序方式是使用内建的sort()方法,速度最快而且属于稳定排序 对列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安装条目的顺序进行比

  • 问题内容: 我正在尝试将嵌套列表列表转换为Python 3.3中的元组列表。但是,似乎我没有这样做的逻辑。 输入如下所示: 所需的输出应如下所示: 问题答案: 只需使用列表理解即可: 演示: