2015-09-09 29 views
3

好的,我必須把字典作爲參數並對與鍵相關的鍵和值進行排序。我知道我無法對詞典進行排序,所以我想將它們放入列表中,然後對它們進行排序。但是我需要打印的是一個表格,它是一個列表或具有正確格式的字符串,它將以新行打印每個鍵。這就是代碼應該做的:將字典轉換成列表,然後排序然後返回表

>>> dict1 = {'Animals': ['Anteaters', 'Bulls', 'Mountain Lion', 'Camel', 
'Polar Bear', 'Kangaroo'], 'Amphibians': ['Frog', 'Toads', 'Salamanders'], 
'Insects': ['Butterflies', 'Ants', 'Beetles', 'Bee', 'Centipede']} 


>>> animals(dict1) 
Amphibians 
 Frog 
 Salamanders 
 Toads 
Animals 
 Anteaters 
 Bulls 
 Camel 
 Kangaroo 
 Mountain Lion 
 Polar Bear 
Insects 
 Ants 
 Bee 
 Beetles 
 Butterflies 
 Centipede 

那麼在打印最終列表或字符串時如何格式化表格。我不知道最好的辦法是什麼。這是代碼我有這麼遠,但顯然這是錯誤的:

def animals(aDict): 
    animalslist=[] 
    for keys,values in aDict.items(): 
     animalslist.append(keys) 
     animalslist. append.(values) 
     keys.sort() 
     values.sort() 
    myTable=' ' 
    for each in animalslist: 
     value=aDict[each] 
     myTable = myTable + '\n' +each + ' ' +str(aDict[each]) 
    return myTable 

請幫助我,因爲我不知道如何打開這本字典到的東西我可以排序和打印中出用正確的格式讓它看起來像一張桌子。謝謝

回答

4

你在正確的軌道上。您可以先在頂級鍵上使用sorted按照王國的順序打印(我想呢?我忘了我的分類術語)。然後在每一個內部,對內部列表進行分類並用填充空格進行打印。

def animals(d): 
    for key in sorted(d.keys()): 
     print(key) 
     for animal in sorted(d[key]): 
      print(' ' + animal) 

>>> animals(dict1) 
Amphibians 
Frog 
Salamanders 
Toads 
Animals 
Anteaters 
Bulls 
Camel 
Kangaroo 
Mountain Lion 
Polar Bear 
Insects 
Ants 
Bee 
Beetles 
Butterflies 
Centipede 
0
keys = aDict.keys() 
values = aDict.values() 

這樣,你有2名排序列表。

對它們進行排序,當你後:

list.sort() 
-3

您可以使用OrderedDict:

>>> # regular unsorted dictionary 
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2} 
>>> # dictionary sorted by key 
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0])) 
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)]) 

之後,你可以去在OrderedDict並打印表格。

相關問題