python - 从对象列表中提取特定属性列表
问题描述
我有一个对象列表。对象具有 >10 个属性。我想制作一个仅包含类中特定属性子集的列表。
是否有任何内置函数可以做到这一点?或者如果不是,那么最pythonic的方法是什么?
我试过这个,但我希望有一种动态的方式来引用特定的属性(例如,传递字典或类似的解决方案,这将使我能够找出运行时的哪些属性)
filtered_list = [[object.attr1, object.attr2] for object in list_objects]
(解决方案可能只适用于 Python 3)
解决方案
如果您想要对象属性的字典列表:
# the list of attributes to get from each object
attrs = ['attr1', 'attr2']
# using dictionary comprehension to generate the list of attributes and their values
attr_vals_dict = [{a:getattr(o, a) for a in attrs} for o in objects]
输出:
[{'attr1': 1, 'attr2': 2}, {'attr1': 3, 'attr2': 4}, {'attr1': 'banana', 'attr2': 'apple'}]
至于首先获取属性的动态列表,这里已经回答了。
推荐阅读
- python - .raw 到 .wav 通过 pydub(AudioSegment) 听起来很吵
- android - 保存片段状态
- jmeter - 如何在仪表板报告中显示断言错误消息?
- react-native - 使用 react-native-fbsdk 在 facebook 上分享视频
- javascript - 无法读取未定义的属性“地图”(ReactJS-Apollo-Graphql)
- multi-tenant - 谷歌驱动器是多租户应用程序的一个很好的例子吗?
- java - Android Studio 不断更改 misc.xml 中的“project-jdk-name”
- pandas - 为什么 pandas 在这个例子中会改变索引值?
- wordpress - 如何使用 wordpress 钩子在日志文件中获取 woocommerce 新订单计费详细信息
- r - 在R中按条件选择行