>>> d = {'answer':1, 'Question':2}
>>> for i, j in sorted(d.items()): print i
Question
answer
我想不区分大小写名单:
answer
Question
,我相信它可以简单的Python的方式来完成。
>>> d = {'answer':1, 'Question':2}
>>> for i, j in sorted(d.items()): print i
Question
answer
我想不区分大小写名单:
answer
Question
,我相信它可以简单的Python的方式来完成。
如果它只是打印键:
for i in sorted(d.keys(), key=lambda x: x.lower()): print i
如果您需要的值之后,你可以做
for i, j in sorted(d.items(), key=lambda x: x[0].lower()): print i, j
编辑:更短,更好(因为你有d在范围内):
for i in sorted(d, key=str.lower):
print i, d[i]
对不起,我在 – theta
问题下面添加了评论@zetah:要对utf-8编码键进行排序,请先将它们转换为unicode:'sorted(d.items() ,key = lambda x:x [0] .decode('utf-8')。lower())'。 – unutbu
噢,我非常讨厌使用Python而不是ASCII。我试图让自己的'lower'函数像'def clower(word,r):\ n word = r [word [0]] + word [1:] \ n return word'其中r是字典映射替代品,但我无法编码/解码错误。你的代码片段也不行,例如'x ='Питон''或'x =u'Питон'.encode('utf-8')'或'x =r'Питон''都返回'UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xd0:数据在'x [0] .decode('utf-8')'上出现意外结束。我不能等待Python 3成为主要发行版 – theta
import string
sorted(d.items(), key=string.lower)
for k in sorted(d, key=lambda k: k.lower()):
print k
下面的代码片段不适用于西里尔字(UTF-8编码)。在这种情况下,'.lower()'不起作用,所以我自由地扩展了这个问题。如果没有提供答案,我会在下面选择'jellybean'回答问题 – theta