python - 根据列表字典python的输入获取名称

根据输入值,我需要得到相应的名称。我有我的输入 my_list,其中包含名称、min_size 和 max_size。如果输入值小于min_size和max_size,我们需要返回对应的name

下面的代码工作正常,但我们可以通过添加任何映射功能来提高性能和可读性吗?

代码

import random
my_list  = [
            {"name": "bob01", "min_size": 0, "max_size": 100, "capacity": 200},
            {"name": "bob02", "min_size": 101, "max_size": 1000, "capacity": 100},
            {"name": "bob03", "min_size": 1001, "max_size": 5000, "capacity": 50},
            {"name": "bob04", "min_size": 5001, "max_size": 10000, "capacity": 25},
            {"name": "bob05", "min_size": 10001, "max_size": 50000, "capacity": 12},
            {"name": "bob06", "min_size": 50001, "max_size": 100000, "capacity": 6},
            {"name": "bob07", "min_size": 100001, "max_size": 150000, "capacity": 3},
            {"name": "bob08", "min_size": "any", "max_size": "any", "capacity": 1}
        ]
def get_name(n):
    for person in my_list:
        try:
            min = person['min_size']
            max = person['max_size']
            if min <= n <= max:
                return person['name']
        except TypeError:
            return person['name'] 

for i in range(10):
    n = random.randint(0, 170000)
    print("My load is ", n)
    name = (get_name(n))
    print("Mr {} can handle this load".format(name))

最佳答案

您的代码已经相当高效。我只是建议删除 try except block 以提高效率:

def get_name(n):
    for person in my_list:
        if isinstance(person['min_size'], int) and isinstance(person['max_size'], int):
            if person['min_size'] <= n <= person['max_size']:
                return person['name']
        else:
            return person['name']

https://stackoverflow.com/questions/69115580/

相关文章:

python - subprocess.call() 和 os.system() 之间的速度差异

c# - Parallel.Foreach 和每个产生不同的结果 : Why is my code

c - 有没有办法从未知字节设置/清除位,同时保持所有其他位不变?

python - AES CTR解密: Cryptography and Cryptodome gi

r - 如何根据列中的两个值过滤行?

amazon-web-services - 带有自定义 SAML 应用程序的 AWS SSO 'no

Go - 如何子类型化包装错误类?

c# - 如何在 C# 中使用预处理器指令仅在 Windows 10 上执行一些代码?

flutter - 如何在 flutter 中的行之间写 OR

c++ - 在 "Effective Modern C++"示例中在索引运算符之前使用 std::f