从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】:
原因是您试图在字符串上找到 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)
【讨论】:
行未定义 我认为这是因为内容定义中的新行。尝试删除这些换行符以上是关于从python中的字典中提取最大值和最小值的主要内容,如果未能解决你的问题,请参考以下文章
3.python小技巧分享-使用min和max函数去找字典中的最大值和最小值