我想找到一种将数据写入文件,从文件中读取数据并对其进行排序,读取排序后的版本的方法。
基本上我拥有的是
我将按照平均值或总和字段对条目进行排序。然后,我将按顺序读取名称和坐标。
我试图为json编写字典词典;但是,我在读回它之后并不能对其进行真正的排序,也无法如我所愿地对其进行操作。我的字典就像
big_dictionary = {"name1":{"avg":0.1, "sum":0.2, "coordinates":[[0,1,2,3],[4,5,6,7]]}, "name2":{....}}
我也尝试过csv);但是,我无法以原始数据类型读回数据(例如,我无法将列表列表读到列表列表中)
big_list = [[name1, avg1, sum1, [coordinates1, coordinates2,...]], [name2, ...]]
我知道一种选择是使用熊猫。我还没有尝试过它,因为我不熟悉它,而且在尝试使用它的方法时恐怕会浪费更多的时间。如果您推荐这种方式,我还需要更多信息
在这种情况下我该怎么办?
更新:另外,ordereddict怎么办?
答案 0 :(得分:0)
您可以使用词典列表,以便于排序:
data = [{"name": "name1", "avg":0.1, "sum":0.2, "coordinates":[[0,1,2,3],[4,5,6,7]]}, ..]
data.sort(key: lambda x: x["avg"]) # or sum
答案 1 :(得分:0)
通过JSON进行排序,您可以对数据进行排序,然后将其写为字典列表,而不是字典列表:
big_ordered_list_of_dicts = [
{"name":"name1", "avg":0.1, "sum":0.2, "coordinates":[[0,1,2,3],[4,5,6,7]]},
{"name":"name2", ... },
...,
{"name":"zzzzz", ... },
]
在写入JSON并读回后,其顺序仍然相同。例如,重新排序此列表也很容易
list_in_sum_order = sorted( big_ordered_list_of_dicts, key=lambda x: x['sum'] )
并且相对高效,因为它只是构建另一个列表,它不会复制或移动字典中的实际数据