2016-07-28 22 views
0

だから、私は含まれているオブジェクトの巨大なリストがあります:難易度、数式表現、結果のレベル。私はゲームを構築しようとしているし、式を印刷し、結果を確認したいが、私は別の要素を印刷する方法を知らない。 私のリストは次のようになります: 3、s、520 + 370、890 式だけを印刷したい: 何かのように:print(list、key = lambda x:x.nivel) しかし、リストの電子つのオブジェクト(この場合はニベル)のオブジェクトのリスト内で別々の要素を使用するにはどうすればよいですか?

コード:リストexpressoes考える

class Expressao(object): 

    def __init__(self, nivel, tipo, expressao, resposta): 
     self.nivel = nivel 
     self.tipo = tipo 
     self.expressao = expressao 
     self.resposta = resposta 

    def __repr__(self): 
     return self.nivel + ", " + self.tipo + ", " + self.expressao + ", " + self.resposta` 

class FonteDeExpressoes(object): 
    import csv 
    def lista (self): 
     expressoes = [] 
     with open('exp.txt') as f: 
      for line in f: 
       row = line.split('\t') 
       exp = Expressao(row[0], row[1], row[2], row[3]) 
       expressoes.append(exp) 
     #print expressoes 
     return expressoes 
+1

[編集]して[mcve]を表示してください –

+0

何か試しましたか?コードのサンプルを投稿すれば、あなたを助けようとしています。SOコミュニティは、あなたが何を達成しようとしているのか分からない – repzero

+0

@MosesKoledoyeエラー: TypeError: 'Expressao'オブジェクトはインデックス作成をサポートしていません –

答えて

0

、あなたがmapリストの内包を使用して含まれているクラスのインスタンスの属性を取得することができます:

Pythonの3.xでは0
list_of_nivels = map(lambda x: x.nivel, expressoes) 

、あなたはリスト

と理解とを返すようにmaplistを呼び出す必要があります:

list_of_nivels = [expressao.nivel for expressao in expressoes] 

複数の属性を返すにはリストのすべてのインスタンスから、operator.attrgetterを使用できます。

import operator 

nivels_and_resposta = [operator.attrgetter('nivel', 'resposta')(x) for x in expressoes] 
+0

これは私の問題を解決します!しかし、私のリストは次のようなものを返します:( '3'、'82 \ r \ n ')改行については\ nは理解しますが、\ rは理解しません。 –

+0

@AlexandrePedrecalそれはキャリッジリターンです。システムによっては、通常、EOL文字を ''\ r \ n' 'として指定するものがあります –

関連する問題