使用Python min()max()避免使用数字值的字典排序

时间:2017-11-14 20:16:49

标签: python sorting max min

我有一个脚本从一组值中提取随机数。但是,由于min()max()按字典顺序排序值(因此200被认为大于10000),它今天就破了。我怎样才能避免这里的词典顺序? Len密钥位于正确的轨道上但不太正确。我找不到任何有用的钥匙。

data_set = 1600.csv, 2405.csv, 6800.csv, 10000.csv, 21005.csv

首先尝试:

highest_value = os.path.splitext(max(data_set))[0]
lowest_value = os.path.splitext(min(data_set))[0]

返回:lowest_value = 10000 highest_value = 6800

第二次尝试:

highest_value = os.path.splitext(max(data_set,key=len))[0]
lowest_value = os.path.splitext(min(data_set,key=len))[0]

返回:lowest_value = 1600 highest_value = 10000

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用key按文件的数字部分进行排序:

data_set = ['1600.csv', '2405.csv', '6800.csv', '10000.csv', '21005.csv']

highest = max(data_set, key=lambda x: int(x.split('.')[0]))
lowest = min(data_set, key=lambda x: int(x.split('.')[0]))

print(highest) # >> 21005.csv
print(lowest)  # >> 1600.csv

答案 1 :(得分:2)

你很亲密。不要将@的结果与splittext函数一起使用,而是使用len函数:

int

当然,此解决方案假定您的文件名仅包含数值。