当字典被排序时,是否有一个键总是最后一个?

dr.*_*dme 3 python dictionary

我有一个包含许多键的字典,我想添加一个虚拟键,当字典排序时,它应该总是最后一个.并且排序不区分大小写.我在考虑使用字典中的最后一个单词'zyzzyva'.那会有用吗?如果我的密钥是目录路径,他们可以拥有/,.等等...

And*_*ini 9

您可以创建一个ad-hoc对象,该对象在排序时始终是最后一个:

import functools

@functools.total_ordering
class Last(object):

    def __eq__(self, other):
        return False

    def __lt__(self, other):
        return False
Run Code Online (Sandbox Code Playgroud)

这是一个用法示例:

>>> sorted([Last(), 'c', 'a', 'b'])
['a', 'b', 'c', <__main__.Last object at 0x7f8db518d2e8>]
Run Code Online (Sandbox Code Playgroud)

如果你需要一些字符串,那么考虑使用'\xff'.如果所有的键都是字母数字(在某种意义上它们由字母AZ和数字0-9组成),那么项目的概率就不会大于'\xff'出现.

>>> sorted(['\xff', 'c', 'a', 'b'])
['a', 'b', 'c', 'ÿ']
Run Code Online (Sandbox Code Playgroud)

但请注意,在某些编码(包括UTF-8)中使用了该'\xff'字符.

如果您正在使用Unicode字符串(或使用Python 3),那么u'\uffff'可能是一个很好的替代方案'\xff'.

  • @AndreaCorbellini我认为你的解决方案解决了更大的问题.该项目必须进入*last*.如果它是一个字符串无关紧要,所以你的第一个解决方案确实完美地完成了整个技巧. (2认同)