【问题标题】:How to extract the Max value within the same key [duplicate]如何在同一个键中提取最大值[重复]
【发布时间】:2022-12-14 09:45:52
【问题描述】:
{'201001': [36, 88, 65, 113, 51, 88, 37, 106, 96, 68, 104, 93],
 '201002': [65, 85, 97, 52],
 '201003': [85, 63, 86, 52, 71, 53, 51, 48, 52],
 '201004': [82, 39, 97, 114, 74, 30, 97],
 '201005': [97, 66, 109, 98, 94, 78, 99, 53, 67, 56],
 '201006': [116, 98, 39, 69, 33, 84, 62, 39],
 '201007': [72, 98, 37],
 '201008': [98, 31, 99, 105, 109, 72, 30, 34]}

我有一本看起来像这样的字典,我想在同一个键中提取最大值。并创建一个新字典,每个键只有一个最大值。

【问题讨论】:

  • 你试过什么了?也请不要张贴图片。
  • 用代码部分在 Q 上写入数据来替换图像
  • 以上方法我都试过了,还是有问题。
  • 您收到此错误是因为列表中的所有元素都不是整数:其中一些是字符串。请提供实际重现您的问题的minimal reproducible example。如果您在显示的字典上运行代码,则不会出现此问题。如果你想强制将 val 的元素转换为整数,请执行以下操作:{key:max(int(v) for v in val) for key, val in dict_all.items()}
  • 查看选项的副本,在每个列表上使用 max() 函数。

标签: python dictionary max


【解决方案1】:
dict_t = {
    "201001":[1,2,3,4,5],
    "201002":[6,7,8,9,1],
    "201003":[8,9,10,12],
    "201004":[1,20,21,40,100],
}
{key:max(val) for key,val in dict_t.items()}
#output
{'201001': 5, '201002': 9, '201003': 12, '201004': 100}

【讨论】:

  • 谢谢!我刚刚尝试了代码,但遇到了这样的错误: TypeError: '>' not supported between instances of 'str' and 'int' 我已经检查了我的字典元素的类型。与您定义的 dict_t 相同。
  • @Evelyn:那么你的列表包含字符串和整数的混合。要么确保先清理它们,要么使用生成器表达式忽略字符串,或者先将这些字符串转换为整数。
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 2021-08-03
  • 2012-12-15
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多