2013-10-23 159 views
1

我想解析一個csv文件,並希望按升序章節對輸出進行排序,然後通過主題鍵排序 - 同時保持章節順序。用兩個不同的鍵對字典列表進行排序

我設法排序下面的章節,但無法按主題排序,同時保留章節順序。

In [35]: d = DictReader(open('gatsby-test.csv', 'rb')) 

In [36]: rows = [] 

In [37]: for row in d: 
    ....:  rows.append(row) 
    ....:  

In [38]: sorted_d = sorted(rows, key=lambda item: item['chapter']) 

In [39]: sorted_d 
Out[39]: 
[{'chapter': 'Chapter 1', 
    'character': 'Nick Carraway', 
    'explanation': 'explanation one', 
    'quote': '"quote one"', 
    'theme': 'love'}, 
{'chapter': 'Chapter 2', 
    'character': 'Daisy Buchanan', 
    'explanation': 'explanation two', 
    'quote': '"quote two"', 
    'theme': 'wealth'}, 
{'chapter': 'Chapter 2', 
    'character': 'Jordan Baker', 
    'explanation': 'explanation five', 
    'quote': '"quote five"', 
    'theme': 'dissatisfaction'}, 
{'chapter': 'Chapter 3', 
    'character': 'Daisy Buchanan', 
    'explanation': 'explanation four', 
    'quote': '"quote four"', 
    'theme': 'isolation'}, 
{'chapter': 'Chapter 3', 
    'character': 'Daisy Buchanan', 
    'explanation': 'explanation three', 
    'quote': '"quote three"', 
    'theme': 'isolation'}] 

回答

1

如果改變這一行

sorted_d = sorted(rows, key=lambda item: item['chapter']) 

sorted_d = sorted(rows, key=lambda item: (item['chapter'], item['theme'])) 

它會奏效。

+0

工程就像一個魅力!謝謝。 – puffin

相關問題