我需要使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/