升序浮点字典值

时间:2012-01-31 14:01:48

标签: python sorting dictionary

我有一份表格字典:

d = { 'someText': floatNumber }

floatNumber是一个纪元时间戳。我正在尝试组织这个,以便时间按升序排列。

示例:{'someText':0000001, 'someText1':0000002, and so on}

我能想到的唯一方法是使用for k,v in dict.items()循环,然后手动将其排序到列表中,但这可能需要很长时间。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

也许你想要:

import operator
values = sorted(d.items(), key=operator.itemgetter(1))

会生成元组的排序列表,例如

[('someText', 1), ('someText', 2), ...]

无法对字典进行排序,因此您必须使用其他数据结构来存储键值对。

答案 1 :(得分:0)

from operator import itemgetter

d = {'foo':1, 'bar':3, 'baz':2}
l = [(k, v) for k, v in d.items()]
s = sorted(l, key=itemgetter(1))

# s == [('foo', 1), ('baz', 2), ('bar', 3)]

有关排序的更多信息:http://wiki.python.org/moin/HowTo/Sorting

修改

改进版(感谢评论):

from operator import itemgetter

d = {'foo':1, 'bar':3, 'baz':2}
s = sorted(d.items(), key=itemgetter(1))

# s == [('foo', 1), ('baz', 2), ('bar', 3)]

答案 2 :(得分:0)

首先,默认情况下,词典是未排序的。您可能希望使用列表并在构建数据集时插入适当的位置。否则,请使用sorted功能。

sorted(dict.iteritems(), key=lambda (x, y): y)

答案 3 :(得分:0)

order dictionary可用于按排序顺序存储条目:

>>> from collections import OrderedDict
>>> d = OrderedDict(sorted(dict.items(), key=lambda item: item[1]))