【问题标题】:extract max and min values from a dictionary in python从python中的字典中提取最大值和最小值
【发布时间】:2021-07-30 03:48:45
【问题描述】:

我有以下代码:

content = {}

f = open("input.txt", "r")
for line in f:
    key, value = line.split()
    content[key] = value
    price_values = content.values()
    max_price = max(price_values)
    min_price = min(price_values)
print(content)

我的输入文件是:

A31 149.99
B31 49.99
A41 179.99
F31 169.99
A35 179.99
A44 169.99

任何想法为什么 min max 在这里不起作用?

【问题讨论】:

  • 错误是什么?意外输出?
  • 抱歉,输出返回:max_price 49.99 min_price 149.99
  • 您大概已经打印出content.values() 来看看这是您所期望的,是吗?
  • @jarmod,是的,我做到了。在此代码之外。我还在变量资源管理器中检查了它

标签: python dictionary max min


【解决方案1】:

原因是您试图在字符串上找到 min 和 max。先把它们变成花车。另外我建议你把你的最小值和最大值排除在循环之外。

content = {}
f = open("test.txt", "r")
for line in f:
    key, value = line.split()
    content[key] = float(value)
    price_values = content.values()
max_price = max(price_values)
min_price = min(price_values)
print(max_price,min_price)

输出

{'A31': 149.99, 'B31': 49.99, 'A41': 179.99, 'F31': 169.99, 'A35': 179.99, 'A44': 169.99}
179.99 49.99

这是您的代码的缩短版本。 请注意,无论如何它都不会加速您的代码。事实上,如果我错了,请纠正我,但它可能也会减慢你的代码。我只是发布它,因为它很好看。

print(max({line.split()[0]:float(line.split()[1]) for line in open("test.txt", "r")}.values()),min({line.split()[0]:float(line.split()[1]) for line in open("test.txt", "r")}.values()))

【讨论】:

  • 啊,哎呀。我只看了第一行(并注意到您根本没有打印内容),这就是我提出它的原因。对不起
  • @buddybob。谢谢。那要干净得多。 [0] 和 [1] 是否指定键和值?
【解决方案2】:

我会这样写代码:

with open("test.txt") as f:
    content = {
        k: float(v)
        for line in f
        for k, v in line.split()
    }

price_values = content.values()
max_price = max(price_values)
min_price = min(price_values)
print(max_price,min_price)

【讨论】:

  • 行未定义
  • 我认为这是因为内容定义中的新行。尝试删除这些换行符
猜你喜欢
  • 1970-01-01
  • 2016-05-19
  • 2020-02-02
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 2019-11-22
  • 2013-04-09
相关资源
最近更新 更多