【发布时间】:2013-07-15 00:34:38
【问题描述】:
我正在尝试迭代我以特定顺序定义的字典,但它总是以与我在代码中定义的顺序不同的顺序进行迭代。这只是我正在尝试做的一个基本示例。我正在迭代的字典要大得多,具有更复杂的命名键,并且不按字母/数字顺序。
level_lookup = \
{
'PRIORITY_1' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_2' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_3' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_4' : { 'level' : 'BAD', 'value' : '' },
'PRIORITY_5' : { 'level' : 'CHECK', 'value' : '' },
'PRIORITY_6' : { 'level' : 'CHECK', 'value' : '' },
'PRIORITY_7' : { 'level' : 'GOOD', 'value' : '' },
'PRIORITY_8' : { 'level' : 'GOOD', 'value' : '' },
}
for priority in level_lookup:
if( level_lookup[ priority ][ 'value' ] == 'TRUE' ):
set_levels += str( priority ) + '\n'
我需要在迭代期间保留我定义字典的顺序。我的顺序不是按字母顺序排列的,所以按字母顺序排序并没有真正的帮助。有没有办法做到这一点?我试过 `level_lookup.items(),但这也不能维持我的顺序。
【问题讨论】:
-
如果您想按特定顺序使用常规字典...don't。请改用
OrderedDict。 -
字典没有订单。也就是说,当您迭代时,项目必须以某种顺序出现,但这对于 Python 来说是最简单的,并且可能类似于或可能不类似于放入项目的顺序,并且可能会在您添加或删除项目时发生变化。如果您希望您的商品按顺序排列,请使用维护商品顺序的容器,例如
collections.OrderedDict。
标签: python loops dictionary