我很好奇在创建字典后是否可以重新排列键。
我想首先枚举每个键后面的值的总数,然后打乱顺序,以便它们可以从最大到最小打印出来。
说:
x= {'ONE': ['foo'], 'THREE': ['up', 'side', 'down'], 'TWO': ['hot', 'mess']}
我可以让它看起来像,或者至少按三、二、一的顺序打印出来吗?
我可以结合.get
某种len()
方式来实现这一目标吗?
我很好奇在创建字典后是否可以重新排列键。
我想首先枚举每个键后面的值的总数,然后打乱顺序,以便它们可以从最大到最小打印出来。
说:
x= {'ONE': ['foo'], 'THREE': ['up', 'side', 'down'], 'TWO': ['hot', 'mess']}
我可以让它看起来像,或者至少按三、二、一的顺序打印出来吗?
我可以结合.get
某种len()
方式来实现这一目标吗?
字典键在 Python 中没有排序,因此无法重新排序。
但是,如果您确实想按列表大小的顺序将其打印出来,则可以将其显示为元组列表:
sorted(x.items(), key=lambda t: -len(t[1]))
# [('THREE', ['up', 'side', 'down']), ('TWO', ['hot', 'mess']), ('ONE', ['foo'])]
一种没有有序字典的方法:
x= {'ONE': ['foo'], 'THREE': ['up', 'side', 'down'], 'TWO': ['hot', 'mess']}
xkeys = sorted(x, key=lambda y: len(x[y])
for key in xkeys:
print(x[key])
它不会重新排序您的 dict,但结果相同。但正如其他人所说,字典在 python 中的定义是无序的。Ordered dict 允许您将元素移动到最后,也可以在创建时对其进行排序。这里的文档:http: //docs.python.org/dev/library/collections#collections.OrderedDict 所以你也可以使用那里找到的排序方法。
OrderedDict(sorted(d.items(), key=lambda t: len(t[1])))