为了账号安全,请及时绑定邮箱和手机立即绑定

字典中元素的打印顺序

字典中元素的打印顺序

慕斯王 2021-06-28 12:50:27
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',]
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您的列表推导根据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)


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信