【发布时间】:2021-07-17 23:06:03
【问题描述】:
给定一个包含元组键和字符串值的 x 字典:
x = {(0, 4): 'foo', (4,9): 'bar', (9,10): 'sheep'}
任务是编写函数,找到值,给定一个特定的数字,例如如果用户输入 3,它应该返回 'foo'。我们可以假设键中没有重叠的数字。
另一个例子,如果用户输入 9,它应该返回 'bar'。
我尝试将x dict 转换为列表并编写如下函数,但如果键中的值范围非常大,则不是最佳选择:
from itertools import chain
mappings = None * max(chain(*x))
for k in x:
for i in range(k[0], k[1]):
mappings[i] = x[k]
def myfunc(num):
return mapping[num]
-
myfunc函数还能怎么写? - 是否有更好的数据结构来保留
mapping?
【问题讨论】:
-
元组范围是打开还是关闭?
-
我们可以假设键是连续范围吗?
-
如果键不是连续范围,那么你的映射函数不正确。
-
啊,是的,我实际上必须忽略我取了最大值,然后在运行列表理解之前用 None 预填充。
-
我已经更新了我的答案。请让我知道这是否为您的 dict 提供了足够的性能。
标签: python dictionary data-structures tuples key-value