python - 过滤数据类列表以获取信息
问题描述
我有一个定义为的数据类
@dataclass
class UserInfo:
name: str
salary: int
我正在存储数据类列表
userList = [UserInfo(name: 'john', 'salary': 100000), UserInfo(name: 'rick', 'salary': 150000)]
现在我想知道 john 的薪水,如何在字符串中使用 oneliner 中的列表获取这些信息。
print(f"salary of john is {salary for user in userList if user.name == 'john'}") # somefilter needed for {}
解决方案
我会做这样的事情
userList = [UserInfo(name='john', salary=100000), UserInfo(name='rick', salary=150000)]
salary = [user.salary for user in userList if user.name == 'john'][0]
print(f"salary of john is {salary}")
如果您要更频繁地使用这种按名称搜索列表的方式,我会覆盖数据类的__eq__
方法
@dataclass
class UserInfo:
name: str
salary: int
def __eq__(self, other):
if other == self.name:
return True
return False
if __name__ == "__main__":
userList = [UserInfo(name='john', salary=100000), UserInfo(name='rick', salary=150000)]
idx = userList.index('john')
print(f"salary of john is {userList[idx].salary}")
推荐阅读
- javascript - 从 url 获取第一个和最后一个文件夹
- android - 如何从另一个 firebase 项目写入 firebase 数据库?
- typescript - 不同实现的抽象类?
- yarnpkg - node-sass 安装错误:找不到包“error-ex”
- opencv - 如何连接所有轮廓?
- python - 如何使用不同的形状将一个轮廓分成两个?
- sql - 3列选择成2表列,1对多关系,SQL
- android - Google Play 商店中的图标和屏幕截图不更新
- laravel - 使用 VueJs 和 Laravel 上传多个文件
- php - 我无法运行工匠计划:在共享主机上运行 cron 命令