ast*_*eri 3 python dictionary key
如果这很明显,请原谅我,但我对 Python 非常非常陌生。我已经找到了从字典中获取多个键的方法,但这不是我想要做的。
基本上我正在寻找这样的东西:
my_dict = { "1-10" : "foo",
"11-20" : "bar",
# ...
"91-100" : "baz" }
Run Code Online (Sandbox Code Playgroud)
...但其中的键实际上不是字符串,并且给定范围内的任何数字都会映射到该值。例如,my_dict[9]应该返回foo,就像my_dict[3]应该一样。我想过使用显式数组,如下所示,但它不起作用:
my_dict = { [1, 2, 3, ..., 10] : "foo",
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是字典的有效用例,或者是否应该使用其他数据结构。但 Python 有一种总是让我惊讶的方式。那么有人知道 Python 的魔力可以让这项工作发挥作用吗?
我必须说我从来没有需要做这样的事情,而且当然没有内置的数据结构。(如果您对哈希有所了解,您就会明白为什么字典不能以这种方式工作。)
一种可能性是根本不使用字典,而是有单独的键和值列表,键列表是每个“范围”的开头。所以:
keys = [0, 10, 20, 30]
values = ['foo', 'bar', 'baz', 'quux']
Run Code Online (Sandbox Code Playgroud)
现在您可以使用bisect来查找相关密钥:
import bisect
pos = bisect.bisect_left(keys, 12)
value = values[pos-1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5868 次 |
| 最近记录: |