如果这很明显,请原谅我,但我对 Python 非常非常陌生。我已经找到了从字典中获取多个键的方法,但这不是我想要做的。
基本上我正在寻找这样的东西:
my_dict = { "1-10" : "foo",
"11-20" : "bar",
# ...
"91-100" : "baz" }
...但其中的键实际上不是字符串,并且给定范围内的任何数字都映射到该值。例如,my_dict[9]
应该回来foo
, 就像my_dict[3]
应该。我想过使用显式数组,如下所示,但它不起作用:
my_dict = { [1, 2, 3, ..., 10] : "foo",
我不确定这是否是字典的有效用例,或者是否应该使用其他数据结构。但 Python 有一种总是让我惊讶的方式。那么有人知道 Python 的魔力可以让这项工作发挥作用吗?
我必须说我从来没有需要做这样的事情,而且当然没有内置的数据结构。 (如果您对哈希有所了解,您就会明白为什么字典不能以这种方式工作。)
一种可能性是根本不使用字典,而是有单独的键和值列表,键列表是每个“范围”的开头。所以:
keys = [0, 10, 20, 30]
values = ['foo', 'bar', 'baz', 'quux']
现在你可以使用bisect
找到相关的密钥:
import bisect
pos = bisect.bisect_left(keys, 12)
value = values[pos-1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)