2017-02-10 10 views
0

cars.txtという別のファイルに辞書を作成しました。私のコードの目的は、辞書にあるものを返して並べ替えることです。私の問題は、今では私のコードはmake/modelを返すだけで、年はソートされていません。助けてくれてありがとう。作成した辞書から日付順にソートするには?

class Car: 
    def __init__(make,model,year): 
     self.make=make 
     self.year=year 

     def set_year(year): 
      self.year=year 

     def get_year(self): 
      return self.year 

     def display(self): 
      return (self.make, ":" , self.year) 

     def __str__(self): 
      return self.make + " : " + str(self.model) 

     def __lt__(self,other): 
      return self.year<other.title 

     def __repr__(self): 
      return str(self) 

def constructDictionary(): 
    dict = {} 
    file = open("cars.txt","r"); 
    for line in file: 
     data = line.split(" ") 
     dict[data[0].strip()]=data[1].strip() 
    file.close() 
    return dict; 

def main(): 
    dict=constructDictionary() 
    [value for (key, value) in sorted(dict.items())] 
    aList=dict 
    print(aList) 
main() 
+1

'[ソートされた(key、value)の値は(dict.items())]'は保存されていません。それを変数に割り当てる必要があります。辞書を並べ替えようとしているので、辞書を並べ替えようとしています。 – MooingRawr

+0

また、日付はどこですか?キーか値の中にありますか? – TrakJohnson

答えて

1

次の行は、あなたのコード内で何もしていません。

[value for (key, value) in sorted(dict.items())] 

これはリストを構築するために使用されるリスト内包であり、かつリストを返します。あなたはmain

def main(): 
    dict=constructDictionary() 
    alist = [value for (key, value) in sorted(dict.items())] 
    print(aList) 

にを変更する場合は、あなたのコードは、 がキーによってソートされた、辞書の値を含むリストを表示します。 dict.items()を使用し、タプルを並べ替えるときに、 sortedは最初にタプルの最初の要素を比較し、次に2番目の要素などを比較するので、辞書キーでソートされます。

辞書の値で並べ替える場合、ちょうど

alist = list(sorted(dict.values())) 

一つの先端にリストの内包表記を変更:Pythonのは、Javaではありません。 getterとsetterを使用することはお勧めしません。 propertyを参照するか、不変量などの制御に興味がない場合は、変数に直接アクセスしてください。

また、ファイルを手動で閉じるのではなく、context managerを使用できます。

0

まず、[value for (key, value) in sorted(dict.items())]をどこかに保存する必要があります。次に、値でソートする場合は、dict.values()で値を取得してソートします。

並べ替えの前に値を処理する必要がある場合は、sorted(values, key=somefunction)を使用できます。関数は値を処理して、適切に並べ替えて整数に変換する関数になります。数学的にソートしたいと思っています。

関連する問題