for 循环是否以 Python 2.x 中的有序方式遍历字典?
Is a for loop going through a dict in an ordered fashion in Python 2.x?
我需要根据字典中的键位置创建 if 语句。
理想情况下我会有这样的东西:
for key in dict:
#setup things based on key value
if key==first key in dict:
#do smth order dependent
elif key==last key in dict:
#do smth order dependent
else:
#do smth order dependent
但是由于 Python 2.x 中的字典没有排序,我无法直接通过索引位置检索元素。
因此,如果 for 循环按照创建键的顺序遍历字典(根据 'keylist' 进行填充),我可以这样做:
for key in dict:
#setup things based on key value
if key==keylist[0]: #the list/tuple the dict keys were created from gets referenced here
#do smth order dependent
elif key==keylist[-1]:
#do smth order dependent
else:
#do smth order dependent
如果顺序与键列表的顺序不同,我需要将 for 循环分成两部分,这样第一个循环可以按照循环遍历 dict 的顺序填充一个新列表(如一种计数器),所以第二个可以根据这个真实的订单做事。
for key in dict:
#setup things based on key value
new_keylist.append(key)
for key in new_keylist:
if key==new_keylist[0]:
#do smth order dependent
elif key==new_keylist[-1]:
#do smth order dependent
else:
#do smth order dependent
我需要加倍努力吗?感谢您提前澄清。
字典在 Python 2.x 中是无序的;如果您需要可预测的行为,您应该使用单独的有序字典实现。
或许还可以看看 Do dicts preserve iteration order if they are not modified?
即使在 3.6+ 中,这也是依赖于实现的;如果您想依赖此行为,请使用 OrderedDict
。参见 https://gandenberger.org/2018/03/10/ordered-dicts-vs-ordereddict/
我需要根据字典中的键位置创建 if 语句。
理想情况下我会有这样的东西:
for key in dict:
#setup things based on key value
if key==first key in dict:
#do smth order dependent
elif key==last key in dict:
#do smth order dependent
else:
#do smth order dependent
但是由于 Python 2.x 中的字典没有排序,我无法直接通过索引位置检索元素。
因此,如果 for 循环按照创建键的顺序遍历字典(根据 'keylist' 进行填充),我可以这样做:
for key in dict:
#setup things based on key value
if key==keylist[0]: #the list/tuple the dict keys were created from gets referenced here
#do smth order dependent
elif key==keylist[-1]:
#do smth order dependent
else:
#do smth order dependent
如果顺序与键列表的顺序不同,我需要将 for 循环分成两部分,这样第一个循环可以按照循环遍历 dict 的顺序填充一个新列表(如一种计数器),所以第二个可以根据这个真实的订单做事。
for key in dict:
#setup things based on key value
new_keylist.append(key)
for key in new_keylist:
if key==new_keylist[0]:
#do smth order dependent
elif key==new_keylist[-1]:
#do smth order dependent
else:
#do smth order dependent
我需要加倍努力吗?感谢您提前澄清。
字典在 Python 2.x 中是无序的;如果您需要可预测的行为,您应该使用单独的有序字典实现。
或许还可以看看 Do dicts preserve iteration order if they are not modified?
即使在 3.6+ 中,这也是依赖于实现的;如果您想依赖此行为,请使用 OrderedDict
。参见 https://gandenberger.org/2018/03/10/ordered-dicts-vs-ordereddict/