Python 如何从字典中获得最大的价值?

Python 如何从字典中获得最大的价值?,python,python-3.x,Python,Python 3.x,我还在学蟒蛇3。请帮我解决问题:) 我有一本字典 "527740905101197317": { "lvl": 7, "exp": 6, "gems": 333, "items": {}, "bank": 0 }, "600576767777832972"

我还在学蟒蛇3。请帮我解决问题:) 我有一本字典

    "527740905101197317": {
        "lvl": 7,
        "exp": 6,
        "gems": 333,
        "items": {},
        "bank": 0
    },
    "600576767777832972": {
        "lvl": 6,
        "exp": 14,
        "gems": 100,
        "items": {},
        "bank": 0
    },
    "580843977352413185": {
        "lvl": 1,
        "exp": 700,
        "gems": 6765,
        "items": {},
        "bank": 0
    },
    "720726494640341161": {
        "lvl": 3,
        "exp": 2,
        "gems": 1234,
        "items": {},
        "bank": 0
    },
    "657959364933451796": {
        "lvl": 1,
        "exp": 480,
        "gems": 42,
        "items": {},
        "bank": 0
    },
    "724932280405065830": {
        "lvl": 1,
        "exp": 1,
        "gems": 1256,
        "items": {}
    },
如何使用python3获得最大的“宝石”?
我试过一些教程,但都不管用。

如果您是初学者,最简单的方法就是循环使用键、值对,并跟踪最大的键。是对有关在字典项上循环的文档的引用

您有一个嵌套字典,因此您将在外部字典上循环,并检查内部字典中的条目,以找到最大的

大概是这样的:

def find_max(我的字典):
_最大值的键=无
max_gem=-1
#循环外字典
对于键,my_dict.items()中的值:
#查看内部字典项以找到“gems”键的最大值
如果值['gems']>max_gem:
最大宝石=价值['gems']
最大值的键=键
返回\u max的\u键,max\u gem
我假设您想要具有最大“gems”值的条目的键,而不仅仅是值本身


其他方法是使用“gems”值作为排序键对其进行排序,但这可能是作为新程序员最简单的方法。

使用
.values()
方法迭代所有字典,选择
'gems'
值,并取最大值

max(d['gems'] for d in my_data.values())

我会使用内置的
max
函数重新结束,并指定
参数:

max_gems_key = max(dictionary, key=lambda a: dictionary[a]['gems'])
max_gems_val = dictionary[max_gems_key]
让我简化并分解所有内容:

def keyFunction(a):
    return dictionary[a]['gems']
max_gems_key = max(dictionary, key=keyFunction)
max_gems_val = dictionary[max_gems_key]
发生的情况:我首先创建了一个函数,在收到字典键时查找gems-gems值是
max
用来标识较大的值,因为没有它您无法分辨较大的值(例如is
{'a':1,'b':2}>{'a':2,'b':1}
?)。然后,我调用
max
函数,它遍历所有键,找到最大的-它,再次使用
keyFunc
确定键的大小,并将最大的键分配给
max\u gems\u key
。有关
max
用法的进一步信息


希望对你有帮助

由于这是一个嵌套字典,如果您想使用
pandas
使用它,您也可以尝试这种方法

import pandas as pd
df = pd.DataFrame(data_dict).T
df['gems'].max()

这回答了你的问题吗?