根据输入值,我需要得到相应的名称。我有我的输入 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
amazon-web-services - 带有自定义 SAML 应用程序的 AWS SSO 'no
c# - 如何在 C# 中使用预处理器指令仅在 Windows 10 上执行一些代码?