2010-01-19 153 views
1
s={ 
     'userName': "4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf", 
     'userNameMin': "\u4e0d\u80fd\u5c0f\u4e8e4\u4e2a\u5b57", 
     'userNameMax': "\u4e0d\u80fd\u8d85\u8fc712\u4e2a\u5b57", 
     'userNameExist': "\u8be5\u7528\u6237\u540d\u5df2\u88ab\u6ce8\u518c\u4e86\uff0c\u8bf7\u6362\u6362", 
     'userNameInvalid': "\u53ea\u652f\u6301\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf", 
     'userNameStartInvalid': "\u7528\u6237\u540d\u4e0d\u80fd\u4ee5\u4e0b\u5212\u7ebf\u5f00\u5934", 
     'nickName': "6\u4f4d\u4ee5\u5185\u4e2d\u6587\u621612\u4f4d\u4ee5\u5185\u82f1\u6587\u5b57\u7b26", 
     'nickNameMin': "\u4e0d\u80fd\u5c0f\u4e8e1\u4e2a\u5b57", 
     'nickNameMax': "\u4e0d\u80fd\u8d85\u8fc76\u4e2a\u6c49\u5b57\u621612\u4e2a\u82f1\u6587\u5b57\u7b26", 
     'nickNameExist': "\u8be5\u540d\u5b57\u5df2\u88ab\u5360\u7528\uff0c\u8bf7\u6362\u6362", 
     'nickNameInvalid': "\u53ea\u652f\u6301\u4e2d\u6587\u3001\u5b57\u6bcd\u6216\u6570\u5b57\uff0c\u4e0d\u652f\u6301\u7a7a\u683c\u548c\u7279\u6b8a\u7b26\u53f7", 
     'nickNameError': "\u540d\u5b57\u4e2d\u542b\u6709\u8fdd\u7981\u8bcd\uff0c\u8bf7\u4fee\u6539\uff0c\u671b\u8c05\u89e3", 
     'password': "6-16\u4f4d\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf", 
     'passwordMin': "\u4e0d\u80fd\u5c0f\u4e8e6\u4e2a\u5b57\u7b26", 
     'passwordMax': "\u4e0d\u80fd\u8d85\u8fc716\u4e2a\u5b57\u7b26", 
     'passwordInvalid': "\u53ea\u652f\u6301\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf", 
     'password1': "\u8bf7\u518d\u786e\u8ba4\u4e00\u6b21\u4f60\u8f93\u5165\u7684\u5bc6\u7801", 
     'password1Invalid': "\u4e24\u6b21\u5bc6\u7801\u8f93\u5165\u4e0d\u4e00\u81f4", 
     'email': "\u8bf7\u8f93\u5165\u4f60\u5e38\u7528\u7684Email", 
     'emailExist': "\u8be5Email\u5df2\u88ab\u6ce8\u518c", 
     'emailInvalid': "Email\u683c\u5f0f\u4e0d\u6b63\u786e", 
     'sex': "\u8bf7\u9009\u62e9\u4f60\u7684\u6027\u522b", 
     'validateCode': "\u8bf7\u8f93\u5165\u56fe\u50cf\u4e2d\u7684\u6587\u5b57", 
     'validateCodeInvalid': "\u9a8c\u8bc1\u7801\u9519\u8bef", 
     'loading': '<img align="absmiddle" alt="" src="http://images.digu.com/web_res_v1/images/ico_loading16.gif" /> \u6b63\u5728\u68c0\u67e5\u552f\u4e00\u6027', 
     'checkCode': '<img align="absmiddle" alt="" src="http://images.digu.com/web_res_v1/images/ico_loading16.gif" /> \u6b63\u5728\u68c0\u67e5\u9a8c\u8bc1\u7801', 
     'ok': '<img align="absmiddle" alt="ok" src="http://images.digu.com/web_res_v1/images/ico_valid.gif" />', 
     'required': "\u5fc5\u586b" 
    } 

for i,j in s.items(): 
     print i,j.decode('unicode-escape') 

輸出:打印時Python字典鍵順序

password1 請再確認一次你輸入的密碼 
required 必填 
userNameExist 該用戶名已被註冊了,請換換 
nickNameMax 不能超過6個漢字或12個英文字符 
checkCode <img align="absmiddle" alt="" src="http://images.digu.com/web_res_v1/images/ico_loading16.gif" /> 正在檢查驗證碼 
userNameMin 不能小於4個字 
userNameMax 不能超過12個字 
userNameInvalid 只支持英文字母、數字和下劃線 
sex 請選擇你的性別 
nickNameExist 該名字已被佔用,請換換 
emailExist 該Email已被註冊 
passwordMax 不能超過16個字符 
emailInvalid Email格式不正確 
loading <img align="absmiddle" alt="" src="http://images.digu.com/web_res_v1/images/ico_loading16.gif" /> 正在檢查唯一性 
userNameStartInvalid 用戶名不能以下劃線開頭 
passwordInvalid 只支持英文字母、數字和下劃線 
validateCode 請輸入圖像中的文字 
passwordMin 不能小於6個字符 
nickName 6位以內中文或12位以內英文字符 
email 請輸入你常用的Email 
nickNameError 名字中含有違禁詞,請修改,望諒解 
password 6-16位英文字母、數字和下劃線 
userName 4-12個英文字母、數字和下劃線 
ok <img align="absmiddle" alt="ok" src="http://images.digu.com/web_res_v1/images/ico_valid.gif" /> 
nickNameMin 不能小於1個字 
password1Invalid 兩次密碼輸入不一致 
nickNameInvalid 只支持中文、字母或數字,不支持空格和特殊符號 
validateCodeInvalid 驗證碼錯誤 

我的問題是:順序被打亂

怎麼做輸出序列。

感謝

+2

你可以用4個字典條目說明你的問題,而不是約30;你有沒有聽說過極簡主義和禪宗這些概念? – 2010-01-19 07:06:42

回答

5

使用OrderedDict 2.7+

或更改字典來元組或列表中,這樣的事情

[ 
    ('userName', "4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf"), 
    ('userNameMin', "\u4e0d\u80fd\u5c0f\u4e8e4\u4e2a\u5b57"), 
    .... 
] 

而且使用s代替s.items()

for i,j in s: 
     print i,j.decode('unicode-escape') 
+0

PEP 372 - 向集合添加有序字典http://www.python.org/dev/peps/pep-0372/ – 2010-01-19 02:19:24

0

使用元組()或陣列[]而不是字典/圖{} - 元組和數組保持它們的順序,但不允許使用按鍵,字典不保持它們的順序,但使用的密鑰允許。

s=(
    ('userName', "4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf"), 
    ('userNameMin', "\u4e0d\u80fd\u5c0f\u4e8e4\u4e2a\u5b57"), 
    ('userNameMax', "\u4e0d\u80fd\u8d85\u8fc712\u4e2a\u5b57"), 
    . 
    . 
    . 
) 

for (i,j) in s: 
    print i,j.decode('unicode-escape') 
2

字典是未排序的。如果您需要按特定順序輸出密鑰,則使用列表來保存它們,然後按順序依次爲每個密鑰索引字典。

對蟒蛇
1

你總是可以做在打印之前進行排序?

for k in sorted(s.keys()): 
     print k,s[k].decode('unicode-escape')