Python(2.4)字典中的排序

Python(2.4)字典中的排序,python,Python,我正在使用Python 2.4.3。我想知道有没有办法得到它的填充顺序 或者,由于我使用的是较旧的Python版本,有没有一种通过正则表达式实现的方法?不仅仅是通过使用字典本身。Python中的字典(以及相当一部分涉及映射的非专门化数据结构)没有排序 您可以潜在地将dict子类化,并覆盖\uuuuu setitem\uuuuuuu和\uuuuu delitem\uuuuuu方法,以将每个键添加/删除到内部列表中,您可以在其中维护自己的排序。然后,您可能必须重写其他方法,例如\uuu iter\u

我正在使用Python 2.4.3。我想知道有没有办法得到它的填充顺序


或者,由于我使用的是较旧的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中引入的。你试过了吗?啊,抱歉集合,但是直到2.7才添加了
orderedict
。如果您需要此功能,可能最简单的方法是创建一个[(key,value)]元组列表并自己处理唯一性,我正在使用Python2.4.3,我认为这可能是不可能的,
collections
是在Python2.4中引入的。你试过了吗?啊,抱歉集合,但是直到2.7才添加了
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