python - 根据整数值分组
问题描述
所以我主要是在寻找关于如何整理我的代码的建议。我有一个类,它有一个整数实例变量 x \in [0, 100]。我想根据每个实例的 x 值为每个实例分配一个字母等级(实例变量 g)。有没有比使用大量 if、elif、else 语句更好/更简洁的方法?
if self.x < 25:
self.g = 'f'
elif self.x < 50:
self.g = 'e'
elif self.x < 70:
self.g = 'd'
elif self.x < 80:
self.g = 'c'
elif self.x < 90:
self.g = 'b'
else:
self.g = 'a'
解决方案
您可以为此使用熊猫:
import pandas as pd
s = pd.Series([2, 41, 61, 83])
pd.cut(s, [0, 25, 50, 70, float("inf")], labels=['a', 'b', 'c', 'd'], retbins=True, right=True)
# 0 a
# 1 b
# 2 c
# 3 d
没有图书馆(学分):
class RangeDict(dict):
def __getitem__(self, item):
if not isinstance(item, range):
for key in self:
if item in key:
return self[key]
raise KeyError(item)
else:
return super().__getitem__(item)
rng = RangeDict({range(0, 25): 'f', range(25,50): 'e'})
val = 21
print(rng[val])
# f
推荐阅读
- angular - Angular CDK 拖放绝对定位元素而不跳跃
- latex - 如何在 R Markdown 中打印文件路径
- python - ImportError:导入pymqe时DLL加载失败:找不到指定的模块
- arrays - 我应该如何声明一个数组,该数组包含一个包含 2 个项目的数组,而 TypeScript 中没有任何项目
- visual-studio - ReSharper 重命名 (Ctrl + R + R) 功能在 Visual Studio 中停止工作而不会触发任何错误
- r - R:循环遍历目录中的所有文件,应用列替换命令
- visual-studio-code - 如何在编辑器中删除“运行|调试”?
- python - 装饰器添加了一个意想不到的参数
- ios - Swift 导航栏 - 删除左侧栏项
- swift - 通过赋值而不是初始化创建结构类型