我有760個文件的列表,從中提取我2行的數據,然後將其存儲在字典的列表:Python3:排序字典鍵
output = {'file number':data, '1':somedatain1, '2':somedatain2, ... '760':somedatain760}
N.B. 這些數字是字符串,因爲它們是通過執行os.listdir('。')獲得的,以便獲取文件名列表並將字符串拆分。 [如果需要的話我可以轉換到這一點的整數(using int()
)]
然後將字典被打印通過創建密鑰的列表,並進行迭代:
keys = output.keys()
for x in keys:
print(x, '\t', output[x])
但是輸出是按隨機順序[因爲字典的無序性,我相信它是一種固有屬性 - 儘管我不知道這是爲什麼),如果輸出按文件編號按數字順序排列,它會更加方便。因此,這引發了一個問題:
鑑於我的鑰匙的名單要麼
1. keys = ['filename', '2', '555', '764' ... '10']
或者,如果我的文件號的字符串更改爲整型:
2. keys = ['filename', 2, 555, 764 ... 10]
我怎麼排序我的根據:鍵列表o文件編號的數字值,如果它是字符串的(如上面的1.所示),或者如果它是混合對象類型的話。 1個字符串和760個整數,如上面2所示)?然而
sorted(output, key=lambda k: int(k) if k.isdigit() else float('-inf'))
這將前數字排序字符串:
首先,你必須定義如何比較' '文件名'<2'工作。 – roippi
關於字典排序是任意的,請參閱:[爲什麼Python字典的順序是任意的?](http://stackoverflow.com/q/15479928) –