Dictionary parm 應(yīng)包含所有鍵['f', 'r', 'b', 'l', 't','u'],然后才會(huì)發(fā)生以下情況。下面提到的迭代以意外的順序打印,請(qǐng)糾正錯(cuò)誤。parm = {'r':'r', 'l':'l', 't':'t', 'u':'u', 'f':'f', 'b':'b'}if all(key in parm for key in ['f', 'r', 'b', 'l', 't','u']): parm = [_ for _ in parm.values() for i in range(0,9)] print (parm)返回:['b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'f', 'f', 'f', 'f', 'f', 'f', 'f', 'f', 'f', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 't', 't', 't', 't', 't', 't', 't', 't', 't']預(yù)期的:['f', 'f', 'f', 'f', 'f', 'f', 'f', 'f', 'f', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 'l', 't', 't', 't', 't', 't', 't', 't', 't', 't', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u',]
1 回答

30秒到達(dá)戰(zhàn)場(chǎng)
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的列表推導(dǎo)根據(jù)parmdict值的順序生成項(xiàng)目(這在 Python 3.6 之前是相當(dāng)隨意的),因此自然不會(huì)遵循您在if語(yǔ)句的條件中使用的鍵的順序。如果您希望鍵以與條件中使用的鍵相同的方式重新排序,您應(yīng)該將其設(shè)為單獨(dú)的列表并將其用于條件和列表理解:
parm = {'r':'r', 'l':'l', 't':'t', 'u':'u', 'f':'f', 'b':'b'}
keys = ['f', 'r', 'b', 'l', 't','u']
if all(key in parm for key in keys):
parm = [parm[key] for key in keys for i in range(0,9)]
print (parm)
添加回答
舉報(bào)
0/150
提交
取消