Python从列出的对象列表中提取属性

时间:2016-03-24 15:36:17

标签: python list properties

我有汇编类实例列表。列表中的程序集总数可以更改。

ASM_list = [ASM1,ASM2,ASM3...etc]

每个程序集都有一个部件列表(我已经过滤了所有部件都有相同的部件)

ASM1.parts = ['hood','fender','door']
ASM2.parts = ['hood','fender','door']

每个部分都有属性

ASM1.parts[0].color = green
ASM2.parts[0].color = blue

我想打印出每个组件的零件属性。示例输出:

part, ASM1, ASM2, ASM3
hood, green, blue, red
fender, black, red, yellow
door, yellow, green, orange

我在使用zip或map时遇到了麻烦。

我在下面尝试的一个例子。

parts_list = []
for ASM in ASM_list:
  parts_list.append([p.color for p in ASM.parts])
print zip(*parts_list)

" Python食谱"和其他几个堆栈溢出帖子显示如何同时迭代多个列表,我遇到的问题是程序集的数量发生了变化,所以我无法写:

for a,b,c in ASM_lists:
  a.part.color, b.part.color, c.part.color

谢谢!

1 个答案:

答案 0 :(得分:1)

假设您有一个part_names列表 - 如果您的部件对象具有name属性以及color属性,则可以使用以下内容:

part_names = []
for part in ASM_list[0].parts:
    part_names.append(part.name)

然后你可以得到你想要的输出:

headers = ["part"]
for i, ASM in enumerate(ASM_list):
    headers.append("ASM%d" % (i+1))
print(", ".join(headers))

for i, part_colors in enumerate(zip(*parts_list)):
    part_name = part_names[i]
    print(part_name + ", " + ", ".join(part_colors))