Python 如何迭代不区分大小写的已排序字典项?

Python 如何迭代不区分大小写的已排序字典项?,python,Python,例如: >>> d = {'answer':1, 'Question':2} >>> for i, j in sorted(d.items()): print i Question answer 我想要不区分大小写的列表: answer Question 我相信这可以用简单的Pythonic方法完成。如果只是打印按键: import string sorted(d.items(), key=string.lower) for i in sorted(d.

例如:

>>> d = {'answer':1, 'Question':2}
>>> for i, j in sorted(d.items()): print i
Question
answer
我想要不区分大小写的列表:

answer
Question

我相信这可以用简单的Pythonic方法完成。

如果只是打印按键:

import string
sorted(d.items(), key=string.lower)
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):


对不起,我在下面添加了评论question@zetah:要对utf-8编码的键进行排序,请首先将它们转换为unicode:
已排序(d.items(),key=lambda x:x[0]。解码('utf-8')。lower())
。噢,我讨厌用ASCII以外的任何语言编写Python。我正在尝试制作自己的
lower
函数,如
def clower(word,r):\n word=r[word[0]]+word[1:][n return word
其中r是带替换的dict映射,但我对编码/解码错误无能为力。您的代码段也没有什么好处,即
x='Пццц'
x=u'Пцццццццццццццц。编码('utf-8')
x=r'Пццццццццц。我等不及Python3成为主要发行版了。下面的代码片段不适用于西里尔文字(UTF-8编码)。在这种情况下,
.lower()
不起作用,所以我可以自由地扩展这个问题。如果没有提供答案,我将选择下面回答的问题,
jellybean
它对我不起作用。AttributeError:'tuple'对象没有属性'lower',根据其他注释,它应该
排序(d.items(),key=lambda x:x[0]。lower())
for i in sorted(d, key=str.lower):
    print i, d[i]
for k in sorted(d, key=lambda k: k.lower()):
    print k