字典中元素的打印顺序

时间:2018-09-27 01:19:56

标签: python dictionary printing iteration python-2.x

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 个答案:

答案 0 :(得分:1)

您的列表推导会根据parm dict的值顺序生成项目(在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)