Python 从作为字符串的数字中获取最大值
我正试图从这个dict中得到最高的值,也就是10000。然而,我得到了500作为Python 从作为字符串的数字中获取最大值,python,dictionary,max,Python,Dictionary,Max,我正试图从这个dict中得到最高的值,也就是10000。然而,我得到了500作为max(production.values())的返回 我相信它是这样的,因为它是从字符串中获得最大值,而不是int(按照代码点的字典顺序) 有人能帮我解决吗。谢谢 您可以将它们转换为整数,并从中提取最大值 production = { 'item1': '500', 'item2': '10000', } 您得到这个输出是因为值是字符串。 要实现正确的max()比较,值必须
max(production.values())
的返回
我相信它是这样的,因为它是从字符串中获得最大值,而不是int(按照代码点的字典顺序)
有人能帮我解决吗。谢谢 您可以将它们转换为整数,并从中提取最大值
production = {
'item1': '500',
'item2': '10000',
}
您得到这个输出是因为值是字符串。 要实现正确的max()比较,值必须是数字
max(int(x) for x in production.values())
获取可用于转换计算数据的键属性:
production = {
'item1': 500,
'item2': 10000,
}
这将保留字典中的值,因此返回的值将保持为字符串
如果您还需要钥匙,它也很方便:
production = {
'item1': '500',
'item2': '10000',
}
# base max calculation on integer version of value
max(production.values(), key=int) # assuming all are integers
# '10000'
这不是您应该接受的答案,但提供了一些性能方面的背景信息:
max(production.items(), key=lambda pair: int(pair[1]))
# ('item2', '10000')
@MarkMeyer提供的答案几乎是@Marceline提供的答案的两倍,尽管两者在技术上都是正确的
结果:
from random import randint
from timeit import timeit
# generating 1,000 dictionaries of random keys with random string values
dicts = [{k: str(randint(1, 10000)) for k in range(10000)} for _ in range(1000)]
def all_max1():
# the answer provided by @MarkMeyer
return [max(d.values(), key=int) for d in dicts]
def all_max2():
# the answer provided by @Marceline
return [max(int(x) for x in d.values()) for d in dicts]
print(timeit(all_max1, number=10))
print(timeit(all_max2, number=10))
@JHeron的建议是一个很好的建议,因为如果你能首先避免在那个位置使用字符串,那么使用整数会更有效——但我假设你的数据是以字符串的形式出现的
但是,如果您需要对这些值进行一次以上操作(不仅仅是单个最大值),则可以考虑首先转换原始数据并避免以后的多次转换。
答案是正确的,但不需要方括号(将其转换为“代码”>“max < /COD>”),因为max
也可以从发电机上取下它-只需关闭[]
即可。谢谢!但是,使用OCR将值插入到关键帧中。我认为没有一种方法可以直接使用int值来构造dict,这不是最好的复制目标。例如,可以使用以下问题更新副本列表:
7.4847795
11.341150599999999