检查数字元素是否在 python 中的间隔键字典中
check if numeric element is in an interval key dictionary in python
来自以下字典,其中 tuple
作为键,string
作为值:
dict_interval = {(1,5):"foo",(5,100):"bar"}
通过使用字典,如何才能使用具有以下行为的函数?
age = 4
categorizer(age, dict_interval)
给出以下输出:
"foo"
def categorizer(value, dict_interval):
for k in dict_interval:
if k[0] < value < k[1]:
return(dict_interval[k])
这应该可行,我猜假设该密钥是唯一的。
如果您想要年龄在区间内的所有值,您可以使用以下代码:
def get_all_values(age):
res = []
for key, value in dict_interval .items():
if (age >= key[0] and age <= key[1]):
res.append(value)
return res
此函数将 return 列出所有正确值。如果你只能得到 1 个正确的值,你可以这样做:
def get_value(age):
for key in dict_interval .keys():
if (age >= key[0] and age <= key[1]):
return dict_interval[key]
如果您预计年龄在 多个区间 内并且您希望得到所有区间:
# Categoriser, returns a list
def categoriser(age, d) -> list:
return [value for key, value in d.items()
if is_between(age, key)]
# Helper function
def is_between(value, interval):
return interval[0] <= value < interval[1]
我在你的数据中添加了一个重叠区间
>>> dict_interval = {(1,5): "foo", (2, 5): "foo2", (5,100): "bar"}
>>> categoriser(4, dict_interval)
["foo", "foo2"]
如果您只想要 第一个值:
# Categoriser, returns first value
def categoriser(age, d) -> str:
for key, value in d.items():
if is_between(age, key):
return value
>>> categoriser(4, dict_interval)
"foo"
来自以下字典,其中 tuple
作为键,string
作为值:
dict_interval = {(1,5):"foo",(5,100):"bar"}
通过使用字典,如何才能使用具有以下行为的函数?
age = 4
categorizer(age, dict_interval)
给出以下输出:
"foo"
def categorizer(value, dict_interval):
for k in dict_interval:
if k[0] < value < k[1]:
return(dict_interval[k])
这应该可行,我猜假设该密钥是唯一的。
如果您想要年龄在区间内的所有值,您可以使用以下代码:
def get_all_values(age):
res = []
for key, value in dict_interval .items():
if (age >= key[0] and age <= key[1]):
res.append(value)
return res
此函数将 return 列出所有正确值。如果你只能得到 1 个正确的值,你可以这样做:
def get_value(age):
for key in dict_interval .keys():
if (age >= key[0] and age <= key[1]):
return dict_interval[key]
如果您预计年龄在 多个区间 内并且您希望得到所有区间:
# Categoriser, returns a list
def categoriser(age, d) -> list:
return [value for key, value in d.items()
if is_between(age, key)]
# Helper function
def is_between(value, interval):
return interval[0] <= value < interval[1]
我在你的数据中添加了一个重叠区间
>>> dict_interval = {(1,5): "foo", (2, 5): "foo2", (5,100): "bar"}
>>> categoriser(4, dict_interval)
["foo", "foo2"]
如果您只想要 第一个值:
# Categoriser, returns first value
def categoriser(age, d) -> str:
for key, value in d.items():
if is_between(age, key):
return value
>>> categoriser(4, dict_interval)
"foo"