从python中的字典中提取最大值和最小值

Posted

技术标签:

【中文标题】从python中的字典中提取最大值和最小值【英文标题】:extract max and min values from a dictionary in 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,是的,我做到了。在此代码之外。我还在变量资源管理器中检查了它 【参考方案1】:

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

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)

【讨论】:

行未定义 我认为这是因为内容定义中的新行。尝试删除这些换行符

以上是关于从python中的字典中提取最大值和最小值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python从csv文件中提取最小值和最大值

java中如何找出一串时间序列中的最大,最小值

3.python小技巧分享-使用min和max函数去找字典中的最大值和最小值

[基础] 在Python中获得字典列表中最大值与最小值

从 ColumnDataSource 列中提取最大值和最小值

不使用 max() 和 min() 从字典中获取最大值和最小值