使用Python存储和操作数据的最佳方法

时间:2019-02-20 09:16:30

标签: python json pandas csv

我想找到一种将数据写入文件,从文件中读取数据并对其进行排序,读取排序后的版本的方法。

基本上我拥有的是

  • 名称:字符串
  • 平均:浮动
  • 总和:浮点数
  • 坐标:列表列表,包含浮点数。每个名称可以是可变长度

我将按照平均值或总和字段对条目进行排序。然后,我将按顺序读取名称和坐标。

我试图为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怎么办?

2 个答案:

答案 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'] ) 

并且相对高效,因为它只是构建另一个列表,它不会复制或移动字典中的实际数据