【发布时间】:2018-09-27 01:19:56
【问题描述】:
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',]
【问题讨论】:
-
欺骗stackoverflow.com/questions/15479928/…。而且您的代码仍然无效。
-
更新代码,现在有效
-
在 3.6 之前的 Python 版本中,字典中的项目顺序未定义。要在早期版本中保留顺序,请使用
collections.OrderedDict而不是常规的dict。 -
您似乎依赖于按特定顺序获取字典值。除了最新版本的 Python(2.x 肯定不是)之外,字典在所有版本中都不是这样工作的。
-
另外,您为什么希望按该顺序返回值?这就是它们在列表中的排序方式,但那又怎样?这没有任何联系。
标签: python dictionary printing iteration python-2.x