将字典转换为列表,排序然后返回表

时间:2015-09-09 13:01:16

标签: python sorting dictionary

好的,我必须将字典作为参数,并对与键相关的键和值进行排序。我知道我无法对字典进行排序,所以我想将它们放入列表然后对它们进行排序。但我需要打印的是一个表,它是一个列表或一个具有正确格式的字符串,它将在新行中打印每个键。这就是代码应该做的事情:

>>> 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

请帮助我,因为我不知道如何将这本词典变成我可以排序的东西,并以正确的格式打印出来,使它看起来像一张桌子。谢谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

keys = aDict.keys()
values = aDict.values()

这样你就有2个可排序列表。

在发布时对它们进行排序:

list.sort()

答案 2 :(得分:-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并打印表格。