Python(2.4)字典中的排序
我正在使用Python 2.4.3。我想知道有没有办法得到它的填充顺序Python(2.4)字典中的排序,python,Python,我正在使用Python 2.4.3。我想知道有没有办法得到它的填充顺序 或者,由于我使用的是较旧的Python版本,有没有一种通过正则表达式实现的方法?不仅仅是通过使用字典本身。Python中的字典(以及相当一部分涉及映射的非专门化数据结构)没有排序 您可以潜在地将dict子类化,并覆盖\uuuuu setitem\uuuuuuu和\uuuuu delitem\uuuuuu方法,以将每个键添加/删除到内部列表中,您可以在其中维护自己的排序。然后,您可能必须重写其他方法,例如\uuu iter\u
或者,由于我使用的是较旧的Python版本,有没有一种通过正则表达式实现的方法?不仅仅是通过使用字典本身。Python中的字典(以及相当一部分涉及映射的非专门化数据结构)没有排序 您可以潜在地将
dict
子类化,并覆盖\uuuuu setitem\uuuuuuu
和\uuuuu delitem\uuuuuu
方法,以将每个键添加/删除到内部列表中,您可以在其中维护自己的排序。然后,您可能必须重写其他方法,例如\uuu iter\uuu
,以从for循环中获得所需的排序
…或者只使用as而不仅仅是使用字典本身。Python中的字典(以及相当一部分涉及映射的非专门化数据结构)没有排序 您可以潜在地将
dict
子类化,并覆盖\uuuuu setitem\uuuuuuu
和\uuuuu delitem\uuuuuu
方法,以将每个键添加/删除到内部列表中,您可以在其中维护自己的排序。然后,您可能必须重写其他方法,例如\uuu iter\uuu
,以从for循环中获得所需的排序
…或者使用as简短的回答:不。Python字典基本上是无序的 简短回答:没有。Python字典基本上是无序的 字典的结构是无序的。如果要订购,请使用:
字典的结构是无序的。如果要订购,请使用:
字典是无序的——也就是说,它们确实有一定的顺序,但插入顺序和键的散列以不明显的方式影响着它。但是,还有另一个实现可以记住插入顺序
编辑:对于Python2.4,有几个第三方实现。我没有用过,但从那以后看起来很有希望。字典是无序的——也就是说,它们确实有一些顺序,但插入顺序和键的散列以不明显的方式影响着它。但是,还有另一个实现可以记住插入顺序
编辑:对于Python2.4,有几个第三方实现。我没有使用过任何集合,但因为看起来很有希望。我正在使用Python2.4.3,我认为这可能是不可能的。
collections
我相信是在Python2.4中引入的。你试过了吗?啊,抱歉orderedict
。如果您需要此功能,可能最简单的方法是创建一个[(key,value)]元组列表并自己处理唯一性,我正在使用Python2.4.3,我认为这可能是不可能的,collections
是在Python2.4中引入的。你试过了吗?啊,抱歉orderedict
。如果您需要此功能,那么创建一个[(key,value)]元组列表并自己处理唯一性可能是最简单的方法。据称这是Python2.7中元组的替代品(Raymond Hettinger被认为是这两个实现的作者),并为Python2.4及更高版本工作。他使用的是Python2.4.3。OrderedDict是从2.7.+1开始新的,用于voidspace的实施。我以前不知道,他在使用python 2.4.3。OrderedDict是从2.7.+1开始新的,用于voidspace的实施。我以前没有意识到这一点。也许编辑问题的标题以表明您在python 2.4.x上,或者表明collections.OrderedDict不是一个选项。也许编辑问题的标题以表明您在python 2.4.x上,或者表明collections.OrderedDict不是一个选项。
r_dict={'answer1': "value1",'answer11': "value11",'answer2': "value2",'answer3': "value3",'answer4': "value4",}
for i in r_dict:
if("answer" in i.lower()):
print i
Result is answer11,answer2,snswer4,answer3
import collections
r_dict = collections.OrderedDict( [ ( 'answer1', "value1"), ('answer11', "value11"), ('answer2', "value2"), ('answer3', "value3"), ('answer4', "value4") ] )
for i in r_dict:
if("answer" in i.lower()):
print i