从STRING的LIST中提取数字,然后根据其标签将其分配给另一个列表

时间:2019-07-27 14:35:30

标签: python-3.x

我有一个STRINGS列表,每个列表包含一行文本,如下所示:

{"name":"polygon","all_points_x":[319,469,573,685,786,1005,1008,839,684,576,515,335,319],"all_points_y":[374,310,275,249,232,211,213,230,255,280,300,374,374]}

我想做这样的事情:

x_coordinates = []
y_coordinates = []

iterate through list:
    extract numbers
    append to x_coordinates if they belong to "all_points_x":
    otherwise append to y_coordinates if they belong to "all_points_y"

但是我完全不确定该怎么做。

1 个答案:

答案 0 :(得分:1)

所以实际上您拥有的是字典,而不是字符串列表。字典是python中一个不错的工具,因为它们使您可以使用键来访问数据。例如,在您的字典中,键为“名称”,“ all_points_x”和“ all_points_y”,它们在调用时分别返回[“ polygon”](这是一个str),[319,469,573,685,786,1005,1008,839,684,576,515,335,319]的值这些都是整数)和[374,310,275,249,232,211,213,230,255,280,300,374,374](也是整数)。因此,一个简单的答案就是...

d = {"name":"polygon","all_points_x":[319,469,573,685,786,1005,1008,839,684,576,515,335,319],"all_points_y":[374,310,275,249,232,211,213,230,255,280,300,374,374]}

x_coordinates = []
y_coordinates = []

for i in d["all_points_x"]:
    x_coordinates.append(i)

for i in d["all_points_y"]:
    y_coordinates.append(i)

print(x_coordinates)
print(y_coordinates)

编辑:尝试类似的事情,将pandas元素转换成字典。 (不确定这会对您的密钥产生什么影响)

import pandas

data = pandas.read_csv("data.csv")
d = data.to_dict()
...

EDIT2:我想这应该是您所需要的,假设您希望所有x和y都在一起。

import pandas
import json

x_coordinates = []
y_coordinates = []

data = pandas.read_csv("C://Users//Zak//Documents//Testing//dataset.csv")
data2 = list(data["region_shape_attributes"].values)

for i in data2:
    d = json.loads(i)
    for x in d["all_points_x"]:
        x_coordinates.append(x)
    for y in d["all_points_y"]:
        y_coordinates.append(y)