2016-05-15 78 views
-2

在可變高分中有幾個字典。我需要按鍵值排序,而sorted()不起作用。我怎樣才能在一個變量中排序多個字典?

global highscores 
f = open('RPS.txt', 'r') 
highscores = [line.strip() for line in f] 
sorted(highscores) 
highscores = reverse=True[:5] 
for line in f: 
    x = line.strip() 
    print(x) 
f.close() 

這是錯誤: 類型錯誤:「布爾」對象未標化的

+2

你想從這條線上得到什麼'highscores = reverse = True [:5]' – gdlmx

+0

這條線會把詞典翻轉過來,只顯示前5個 –

+1

似乎這是一個家庭作業問題,因爲我剛剛看到一個類似題。 – gdlmx

回答

0

sorted(v)該返回v的每個元素,以迭代器;它不是一個列表。您可以使用迭代的for循環一次處理的要素之一:

for k in sorted(elements): ... 

您可以將每個元素,並將結果以列表:

v = [f(k) for k in sorted(elements)] 

或者,你可以捕捉所有元素放入列表中。

v = list(k) 

請注意,在上面的代碼中,元素是來自文件而不是字典的字符串。

0

下應該做的(我覺得)你想:

with open('RPS.txt', 'r') as f: # will automatically close f 
    highscores = [line.strip() for line in f] 

highscores = sorted(highscores, reverse=True)[:5] 
for line in highscores: 
    print(line) 

主要的問題是你使用sorted()的方式。並且,最後,而不是試圖迭代通過文件的行再次(這是行不通的,因爲文件不是列表,不能任意迭代)上面的代碼是排序行讀取從該文件中獲取,然後獲取該列表的前5個,其保存在highscores中。之後它打印它們。沒有必要再去掉這些行,這是在文件第一次被讀取時的照顧。

相關問題