2016-03-24 19 views
0

Montaj sınıfı örneklerinin listesine sahibim. Listedeki toplam derleme sayısı değişebilir.Python, listelenen nesnelerin listesinden özellikler ayıklayın

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

her montaj parçaları bir listesini (aynı parçalar var tüm derlemeler filtre var)

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

her bir kısım özelliklerinin

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

yazdırmaya istiyorum sahip bulunmaktadır Her bir montaj için parça özellikleri. Örnek çıktı:

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

Bunu yapmak için zip veya harita kullanarak sorun yaşıyorum.

Aşağıda çalıştığım şeyin bir örneği.

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

"Python yemek kitabı" ve diğer birkaç yığın taşması mesajlar

aynı anda birden fazla listeye nasıl yinelendiğini gösterir, ben sorun meclislerinin sayısı yüzden yazamıyorum değiştirmesidir:

Teşekkürler! İstediğiniz çıktı alabilirsiniz Ardından

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

: -

cevap

1

Eğer part_names bir listesi var varsayarsak ederek parçası nesneleri name niteliği yanı sıra color özniteliği nesneleri, eğer sen alabilir ile:

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)) 
+0

İçgörünümüzü çok takdir ediyorum. Henüz tam olarak kavramıyorum, şu andan itibaren, son baskı ifadesinde "beklenen dizi, float bulundu" hatası alıyorum. Str (part_name) 'i boşuna denedim. – twinturbotom

+0

Bu işler ... Bu şablonlar, çatlaklar (parça ölçüleri) üzerindeki parça özelliklerinde, hatalar benden geliyor. Belki bazı tuple biçimlendirme ile yeniden kullanılabilir? – twinturbotom

+1

"" .join (harita (str, a)) birleştirilecek dizeye dönüştürür. TEŞEKKÜRLER! – twinturbotom

İlgili konular