>>> 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