猿问

字典中元素的打印顺序

Dictionary parm 应包含所有键['f', 'r', 'b', 'l', 't','u'],然后才会发生以下情况。下面提到的迭代以意外的顺序打印,请纠正错误。


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

预期的:


['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',]


慕斯王
浏览 150回答 1
1回答

30秒到达战场

您的列表推导根据parmdict值的顺序生成项目(这在 Python 3.6 之前是相当随意的),因此自然不会遵循您在if语句的条件中使用的键的顺序。如果您希望键以与条件中使用的键相同的方式重新排序,您应该将其设为单独的列表并将其用于条件和列表理解: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)
随时随地看视频慕课网APP

相关分类

Python
我要回答