python使用lambda将列表中的值从列表百分比中排序

python使用lambda将列表中的值从列表百分比中排序,python,dictionary,lambda,rank,percentile,Python,Dictionary,Lambda,Rank,Percentile,假设我有一个数字列表,我在这个列表上应用了百分位数,它返回下面的字典 {100: 2004807.0, 75: 11600.0, 50: 2559.5, 25: 316.0} 然后我创建了以下函数来返回相应的百分比值 def f(x): return { 25: 316.0, 50: 2559.5, 75: 11600.0, 100: 2004807.0 }[x] 现在,下面的函数返回值的秩 def rank(y

假设我有一个数字列表,我在这个列表上应用了百分位数,它返回下面的字典

{100: 2004807.0, 75: 11600.0, 50: 2559.5, 25: 316.0}
然后我创建了以下函数来返回相应的百分比值

def f(x):
    return {
        25: 316.0,
        50: 2559.5,
        75: 11600.0,
        100: 2004807.0
    }[x]
现在,下面的函数返回值的秩

def rank(y):
    if y <= f(25):
        return 25
    elif y <= f(50):
        return 50
    elif y <= f(75):
        return 75
    else:
        return 100
def秩(y):

如果y,您可以从字典中构造一个按值排序的列表。这种转换是必要的,因为字典是不排序的,除非您使用的是Python 3.7+

然后使用
next
lambda
中的生成器表达式:

d = {100: 2004807.0, 75: 11600.0, 50: 2559.5, 25: 316.0}
d_rev = sorted(d.items(), key=lambda x: x[1])

val = 2000
res = (lambda x: next((k for k, v in d_rev if x <= v), 100))(val)

print(res)
# 50
d={100:2004807.0,75:11600.0,50:2559.5,25:316.0}
d_rev=sorted(d.items(),key=lambda x:x[1])
val=2000

res=(lambda x:next((k代表k,d_rev中的v,如果x),您可以从按值排序的字典中构造一个列表。这种转换是必要的,因为字典没有顺序,除非您使用的是Python 3.7+

然后使用
next
lambda
中的生成器表达式:

d = {100: 2004807.0, 75: 11600.0, 50: 2559.5, 25: 316.0}
d_rev = sorted(d.items(), key=lambda x: x[1])

val = 2000
res = (lambda x: next((k for k, v in d_rev if x <= v), 100))(val)

print(res)
# 50
d={100:2004807.0,75:11600.0,50:2559.5,25:316.0}
d_rev=sorted(d.items(),key=lambda x:x[1])
val=2000

res=(λx:next((k代表k,如果x不改变
f()
函数,我将使用
next
和生成器,同时提供默认值100

lambda y: next((x for x in [25, 50, 75] if y <= f(x)), 100)

lambda y:next((x代表[25,50,75]中的x)如果y而不更改
f()
函数,我会将
next
与生成器一起使用,同时提供默认值100

lambda y: next((x for x in [25, 50, 75] if y <= f(x)), 100)

lambda y:next((x代表[25,50,75]中的x),如果y要将
rank
函数转换为
lambda
?是否要将
rank
函数转换为
lambda