【问题标题】:Representing data-structure in python在 python 中表示数据结构
【发布时间】:2018-12-07 18:33:04
【问题描述】:

在 python 中表示这种数据结构的最佳方式是什么:

[{'x': 230, 'y': 50}, {'x': 350, 'y': 50}, {'x': 410, 'y': 50}]

这不是json,是别的东西,对不起我的愚蠢,我正在搜索各种python教程,但无法弄清楚它是否是像numpy.load或json.loads这样可以轻松加载的结构,因为当我尝试将该结构验证为 JSON,它说无效 json...

【问题讨论】:

  • 那是一个字典列表,你想用这些数据做什么?
  • 它不是 JSON,但可以很容易地制作成这样。 json.dumps() 足以序列化它。你的问题我不清楚。
  • 加载/解析到 x/y 坐标字典...
  • 但它已经了。这是一个字典列表。 JSON 是从哪里来的?
  • my_list[1]['x']....

标签: python arrays json numpy data-structures


【解决方案1】:

您有一个包含三个字典(键到值的映射)的列表,它的工作方式如下:

>>> dicts = [{'x': 230, 'y': 50}, {'x': 350, 'y': 50}, {'x': 410, 'y': 50}]
>>> dicts[0]
{'x': 230, 'y': 50}
>>> dicts[0]['x']
230
>>> dicts[2]['y']
50

由于在您的示例中所有字典共享相同的键('x''y'),您可以将它们解释为 记录

表示这些记录的一种简洁方法是使用pandas.DataFrame,它具有类似表格的打印输出。

>>> import pandas as pd
>>> pd.DataFrame(dicts)
     x   y
0  230  50
1  350  50
2  410  50

如果你有一个字符串

>>> s = "[{'x': 230, 'y': 50}, {'x': 350, 'y': 50}, {'x': 410, 'y': 50}]"

您可以使用ast.literal_eval 安全地评估它。

>>> from ast import literal_eval
>>> literal_eval(s)
[{'x': 230, 'y': 50}, {'x': 350, 'y': 50}, {'x': 410, 'y': 50}]

【讨论】:

  • 我实际上已经用 dicts = eval( 另一个带有该字符串的变量) 加载了上面的代码...
  • @AleksandarPavić 考虑ast.literal_eval,它是eval 的保存版本,用于字符串、列表、字典等文字......
【解决方案2】:

你有一个字典列表。

myList = []

dict1 = {'x': 230, 'y': 50}
dict2 = {'x': 350, 'y': 50}
dict3 = {'x': 410, 'y': 50}

myList.append(dict1)
myList.append(dict2)
myList.append(dict3)

【讨论】:

  • 但我不能只是一些东西。加载它?我需要为它做字符串解析器吗?打破 } , { 并附加它?
猜你喜欢
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 2012-03-20
  • 1970-01-01
  • 2011-01-01
  • 2011-04-24
  • 1970-01-01
相关资源
最近更新 更多