2017-03-03 69 views
0

我的代碼:排序鍵

abc = { 
    'Name':emp_name, 
    'Id no':emp_idno, 
    'Leave taken':k, 
    'Leave reqd':b, 
    'Total days of leave':total, 
    'Reason':reason 
} 

我得到的輸出爲:

id, name, total, reqason, leave taken, leave reqd 

我所要的輸出是這個順序:

Name, id, leave taken, leave reqd, total, reason 

我對此很感興趣,如果有人能幫助我,這將是非常棒的。

我的CSV

dl = {'Name':emp_name,'Id no':emp_idno, 'Leave taken':k, 'Leave 
> reqd':b, 'Reason':reason} 
>  
> 
>  key_list = ['Name', 'Id no', 'Leave taken', 'Leave reqd', 'Reason'] abc = { 'Name':emp_name, 'Id no':emp_idno, 'Leave taken':k, 
> 'Leave reqd':b, 'Reason':reason } 
> 
> for k in key_list: 
>  print abc[k] Lst.append(k) 
> 
> keys = Lst[0].keys() with open('employee.csv', 'wb') as output_file: 
>   dict_writer = csv.DictWriter(output_file, keys) 
>   dict_writer.writeheader() 
>   dict_writer.writerows(Lst) 
+0

的可能的複製[Python字典,如何保持鍵/值的聲明相同的順序?](http://stackoverflow.com/questions/1867861/python-dictionary-how-to-keep-keys -values-in-order-order-declared-declared) –

回答

1

Dictionaries默認情況下無序。

您需要一個orderedDicitionary

看到collections.OrderedDict

如:

from collections import OrderedDict 
d = OrderedDict() 
d['Name'] = emp_name 
d['Id no'] = emp_idno 
d['Leave taken'] = k 
print d 
+0

我從用戶處獲得輸入。 – anonymous

+0

我的鑰匙是不變的。那麼是否有可能在字典中對鍵進行排序,或者我應該將它們更改爲列表? – anonymous

+0

你需要'orderedDict'如我的回答 –

0

一個簡單的黑客可以存儲在列表中的鍵。

key_list = ['Name', 'Id no', 'Leave taken', 'Leave reqd', 'Total days of leave', 'Reason'] 
abc = { 
'Name':emp_name, 
'Id no':emp_idno, 
'Leave taken':k, 
'Leave reqd':b, 
'Total days of leave':total, 
'Reason':reason 
} 

for k in key_list: 
    print abc[k] 
+0

當我寫這個k或d作爲mithilesh說成一個csv文件,csv文件的輸出不遵循列表順序 – anonymous

+0

我可以理解,即時通訊嘗試寫一個列表作爲csv而不是字典。只是想知道解決方案來糾正自己 – anonymous