为什么在字典中,当我们有相同的值和不同的键名时,为什么它会选择一个与另一个相比

卡维拉吉
   >>> votes ={}
    >>> votes["maddy"]=6
    >>> votes["katty"]=6
    >>> votes


   {'maddy': 6, 'katty': 6}
    >>> print(max(votes.items(), key = lambda k:k[1]))
    ('maddy', 6)
    >>> votes["jackie"]=1
    >>> votes
    {'maddy': 6, 'katty': 6, 'jackie': 1}
    >>> votes["kavi"]=1
    >>> votes
    {'maddy': 6, 'katty': 6, 'jackie': 1, 'kavi': 1}
    >>> print(min(votes.items(), key = lambda k:k[1]))
    ('jackie', 1)
    >>> 

我知道我们首先插入的具有最大值的任何项目都将被视为最大投票数,如下所示,但是如果我需要最大值作为 katty 键,值为 6 插入在具有相同值 6 的 maddy 键之后怎么办?

    print(max(votes.items(), key = lambda k:k[1]))
 ('maddy', 6)

expected output is 
Katty , 6
很快

根据max文档

如果多个项目是最大的,则该函数返回遇到的第一个项目。

此外,您的代码还取决于.items(). dict保证自Python3.7插入顺序(阅读更多关于它在这里)。如果你的版本低于 3.7 并且你想保持元素插入顺序,你可以使用OrderedDict.

如果要返回具有最大值/最小值的最新元素,可以在键中明确指定顺序:

In [1]: votes = {'maddy': 6, 'katty': 6}

In [2]: max(votes.items(), key=lambda x: x[1])
Out[2]: ('maddy', 6)

In [3]: max(enumerate(votes.items()), key=lambda x: (x[1][1], x[0]))
Out[3]: (1, ('katty', 6))

In [4]: max(enumerate(votes.items()), key=lambda x: (x[1][1], x[0]))[1]
Out[4]: ('katty', 6)

请注意,因为min您需要否定 key 函数中的索引以检索最新元素。这是使具有索引的元素(例如,3 低于索引为 2 的元素)所必需的。在否定索引后,您将 -3 与 -2 进行比较,-3 将低于 -2,因此min将返回具有更高索引的元素:

In [5]: votes = {'maddy': 6, 'katty': 6, 'a': 1, 'b': 1}

In [6]: min(enumerate(votes.items()), key=lambda x: (x[1][1], -x[0]))[1]
Out[6]: ('b', 1)

或者您可以颠倒项目的顺序:

In [7]: max(reversed(list(votes.items())), key=lambda x: x[1])
Out[7]: ('katty', 6)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我们有一个红色区域时,为什么我们需要堆栈分配?

来自分类Dev

当我们在一个接口中添加两个抽象方法并只实现一个方法时,为什么我们不能使用 lambda 实现另一个方法呢?

来自分类Dev

在Xorg中,为什么当我在另一个窗口中进行选择时却丢失了在一个窗口中的文本选择?

来自分类Dev

为什么当我更新一个 useState 时它会更新另一个而不调用它(反应钩子)?

来自分类Dev

Java LRUCache,为什么我们需要另一个集合

来自分类Dev

为什么我们需要另一个模式来进行模式缝合?

来自分类Dev

为什么在关闭系统时我们可以杀死另一个用户的进程

来自分类Dev

当我有五个具有相同选项和值的选择时,如何从另一个选择标签中删除选定的选项?

来自分类Dev

为什么当我们只给一个变量赋一个变量并打印时打印所有对象的属性

来自分类Dev

为什么我们需要一个“MultiRepositoryProvider”和一个单独的“MultiBlocProvider”?

来自分类Dev

为什么我没有在另一个活动中获得传递的值?

来自分类Dev

我将一个范围设置为另一个范围。当我删除原始范围时,另一个被清除。为什么?

来自分类Dev

当我们使2个对象的哈希码指向一个地址时,为什么它是临时的?

来自分类Java

为什么我们需要序列化对象才能将一个活动传递给Android中的另一个活动

来自分类Dev

当我设置setRGB的值时,getRGB返回一个不同的值。为什么?

来自分类Dev

在此示例中,为什么我们返回一个指针而不是一个值?

来自分类Dev

为什么当我按下通知但PendingIntent没有转到另一个Fragment时?

来自分类Dev

当我遍历数组值时,它会打印一个随机数。为什么是这样?

来自分类Dev

为什么只有我们尝试添加的最后一个值重复存储在arraylist中

来自分类Dev

当我从另一个指定了viewBox的文件中引用SVG时,为什么需要指定viewBox属性?

来自分类Dev

春季:当我们将@ComponentScan移到包中的另一个类时会发生什么?

来自分类Dev

当我有一个私有id字段时,为什么Hibernate要求我们实现equals / hashcode方法?

来自分类Dev

当我在Windows中ping一个地址时,它说另一个地址不可达。为什么?

来自分类Dev

当我们为一个类的对象分配一个整数值时,为什么要调用参数化构造函数?

来自分类Dev

当我从另一个组件调用钩子函数时,为什么 App.js 中的“主题”没有改变

来自分类Dev

为什么我们在实现一个新的系统调用时必须使用互联网上的另一个内核源代码?

来自分类Dev

为什么我们要指定一个委托和一个事件,为什么不只在C#中使用一个事件呢?

来自分类Dev

当我们有一个列表时,SQL Server 中的 Json 值

来自分类Dev

当我从popviewcontroller转到另一个视图时,为什么我的Tabbar的用户交互功能已启用?

Related 相关文章

  1. 1

    当我们有一个红色区域时,为什么我们需要堆栈分配?

  2. 2

    当我们在一个接口中添加两个抽象方法并只实现一个方法时,为什么我们不能使用 lambda 实现另一个方法呢?

  3. 3

    在Xorg中,为什么当我在另一个窗口中进行选择时却丢失了在一个窗口中的文本选择?

  4. 4

    为什么当我更新一个 useState 时它会更新另一个而不调用它(反应钩子)?

  5. 5

    Java LRUCache,为什么我们需要另一个集合

  6. 6

    为什么我们需要另一个模式来进行模式缝合?

  7. 7

    为什么在关闭系统时我们可以杀死另一个用户的进程

  8. 8

    当我有五个具有相同选项和值的选择时,如何从另一个选择标签中删除选定的选项?

  9. 9

    为什么当我们只给一个变量赋一个变量并打印时打印所有对象的属性

  10. 10

    为什么我们需要一个“MultiRepositoryProvider”和一个单独的“MultiBlocProvider”?

  11. 11

    为什么我没有在另一个活动中获得传递的值?

  12. 12

    我将一个范围设置为另一个范围。当我删除原始范围时,另一个被清除。为什么?

  13. 13

    当我们使2个对象的哈希码指向一个地址时,为什么它是临时的?

  14. 14

    为什么我们需要序列化对象才能将一个活动传递给Android中的另一个活动

  15. 15

    当我设置setRGB的值时,getRGB返回一个不同的值。为什么?

  16. 16

    在此示例中,为什么我们返回一个指针而不是一个值?

  17. 17

    为什么当我按下通知但PendingIntent没有转到另一个Fragment时?

  18. 18

    当我遍历数组值时,它会打印一个随机数。为什么是这样?

  19. 19

    为什么只有我们尝试添加的最后一个值重复存储在arraylist中

  20. 20

    当我从另一个指定了viewBox的文件中引用SVG时,为什么需要指定viewBox属性?

  21. 21

    春季:当我们将@ComponentScan移到包中的另一个类时会发生什么?

  22. 22

    当我有一个私有id字段时,为什么Hibernate要求我们实现equals / hashcode方法?

  23. 23

    当我在Windows中ping一个地址时,它说另一个地址不可达。为什么?

  24. 24

    当我们为一个类的对象分配一个整数值时,为什么要调用参数化构造函数?

  25. 25

    当我从另一个组件调用钩子函数时,为什么 App.js 中的“主题”没有改变

  26. 26

    为什么我们在实现一个新的系统调用时必须使用互联网上的另一个内核源代码?

  27. 27

    为什么我们要指定一个委托和一个事件,为什么不只在C#中使用一个事件呢?

  28. 28

    当我们有一个列表时,SQL Server 中的 Json 值

  29. 29

    当我从popviewcontroller转到另一个视图时,为什么我的Tabbar的用户交互功能已启用?

热门标签

归档