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