用位置函数计算Python字典中指定分段的人数
时间: 2024-02-01 09:15:59 浏览: 78
假设我们有一个字典,其中包含以下数据:
```python
data = {
"Bob": 23,
"Alice": 32,
"Charlie": 18,
"David": 27,
"Eve": 21,
"Frank": 25,
"Grace": 30,
"Hank": 19,
"Ivy": 26,
"Jack": 29,
"Kate": 24,
"Leo": 22,
"Marry": 20,
"Nina": 28
}
```
现在我们想要计算年龄在 [20, 24] 和 [25, 29] 之间的人数。我们可以使用位置函数 `bisect_left` 和 `bisect_right` 来计算这些分段的起始和结束位置,然后计算该范围内的元素数量。
```python
import bisect
def count_in_range(data, lo, hi):
keys = sorted(data.keys())
lo_index = bisect.bisect_left(keys, lo)
hi_index = bisect.bisect_right(keys, hi)
return hi_index - lo_index
# 计算年龄在 [20, 24] 和 [25, 29] 之间的人数
count_20_24 = count_in_range(data, 20, 24)
count_25_29 = count_in_range(data, 25, 29)
print("20-24: ", count_20_24)
print("25-29: ", count_25_29)
```
输出:
```
20-24: 4
25-29: 5
```
阅读全文