好的,我必须将字典作为参数,并对与键相关的键和值进行排序。我知道我无法对字典进行排序,所以我想将它们放入列表然后对它们进行排序。但我需要打印的是一个表,它是一个列表或一个具有正确格式的字符串,它将在新行中打印每个键。这就是代码应该做的事情:
>>> 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
请帮助我,因为我不知道如何将这本词典变成我可以排序的东西,并以正确的格式打印出来,使它看起来像一张桌子。谢谢
答案 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并打印表格。