【问题标题】:Parsing a nested dictionary and finding highest value in Python解析嵌套字典并在 Python 中找到最高值
【发布时间】:2020-01-23 14:12:58
【问题描述】:

我正在运行一个返回以下 json 的脚本:

{
  "languages": [
    {
      "language": "so",
      "confidence": 0.003093857448475861
    },
    {
      "language": "mt",
      "confidence": 0.0028422382337627895
    },
    {
      "language": "sv",
      "confidence": 0.002833646520611977
    },
    {
      "language": "fi",
      "confidence": 0.0006320737767975471
    },
    {
      "language": "nn",
      "confidence": 0.00046142993421229
    },
    {
      "language": "eo",
      "confidence": 0.0004201385148033488
    },
    {
      "language": "nl",
      "confidence": 0.9421574512
    }
  ]
}

我想要做的是打印最接近“1”的“置信度”的键,所以在这个例子中,我想返回“nl”。这本词典的变量是“语言”。

我尝试了以下方法,但由于字典是嵌套的,它不起作用,但我的计划是然后将键和值添加到字典列表中,然后识别最接近 1 的值

for (k, v) in language.items():
    print('Key: ' + k)
    print('Value: ' + str(v) + "\n")

有什么建议可以帮助我识别返回数据中最接近 1 的值吗?

谢谢

【问题讨论】:

  • 你先说最接近 0,然后你说最接近 1。它是哪一个?
  • 这是错字吗?您的意思是接近 1 吗?
  • 抱歉最接近 1 - 我很抱歉。已编辑

标签: json python-3.x dictionary


【解决方案1】:

您可以迭代语言字典。将第一个 lang 设置为最接近的匹配项。然后迭代剩余的语言并将置信度与当前的最佳置信度匹配进行比较。在这种情况下,我说最接近 0 即最小置信度,但您可以通过将

将其更改为最高
data_dict = {
  "languages": [
    {
      "language": "so",
      "confidence": 0.003093857448475861
    },
    {
      "language": "mt",
      "confidence": 0.0028422382337627895
    },
    {
      "language": "sv",
      "confidence": 0.002833646520611977
    },
    {
      "language": "fi",
      "confidence": 0.0006320737767975471
    },
    {
      "language": "nn",
      "confidence": 0.00046142993421229
    },
    {
      "language": "eo",
      "confidence": 0.0004201385148033488
    },
    {
      "language": "nl",
      "confidence": 0.9421574512
    }
  ]
}

my_conf_lang = data_dict['languages'][0]
for lang_dict in data_dict['languages'][1:]:
    if lang_dict['confidence'] < my_conf_lang['confidence']:
        my_conf_lang = lang_dict

print(my_conf_lang)

输出

{'language': 'eo', 'confidence': 0.0004201385148033488}

【讨论】:

  • 为什么这么难?为什么不只是sorted(languages, key=lambda obj: obj['confidence'])[0]
  • nice @funnydman 非常成功。有时,当我在 OP 问题中看到代码时,它会引导我走上一条道路,而无需寻找任何其他解决方案。
猜你喜欢
  • 2015-07-18
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2014-05-18
相关资源
最近更新 更多