我有一份表格字典:
d = { 'someText': floatNumber }
floatNumber
是一个纪元时间戳。我正在尝试组织这个,以便时间按升序排列。
示例:{'someText':0000001, 'someText1':0000002, and so on}
我能想到的唯一方法是使用for k,v in dict.items()
循环,然后手动将其排序到列表中,但这可能需要很长时间。任何帮助将不胜感激。
答案 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]))