我从一个json端点拉取数据,它返回一个列表。
这个列表中的一些元素,我想要去掉。我只对某些元素感兴趣。
我是这样提取数据的:
# Pull the data
url = "https://my-endpoint.com"
user = 'user1'
pwd = 'password1'
response = requests.get(url, auth=(user, pwd))
data = json.loads(response.text)
有效负载看起来类似于:
[{
"apples": {
"value": 0.0
},
"oranges": {
"value": 0.0
},
"name": "testing123"
},
{
"apples": {
"value": 0.0
},
"oranges": {
"value": 0.0
},
"name": "foobar"
},
{
"apples": {
"value": 0.0
},
"oranges": {
"value": 0.0
},
"name": "testing456"
}]
假设上面继续使用许多其他元素,但使用不同的名称。我如何提取所有数据,但排除我想要的数据?
从上面的例子中,我想提取名称"testing123“和"testing456”的所有数据,但排除"foobar“中的数据。
新的列表是我要迭代的内容,以提取我需要的数据。
发布于 2018-06-20 03:32:37
你的问题中有很多不匹配的花括号,但我想我已经弄清楚了。您在一个列表中有3个(+更多)字典,每个字典都有自己的苹果、橙子(或其他)键,然后是一个name
键。您需要一个结构与此字典相同的字典列表,只需要其中包含name in set_of_preapproved_names
的字典。为简洁起见,我假设您有一个名为OK_NAMES
的名称列表:
new_data = [Dict for Dict in data if Dict ["name"] in OK_NAMES]
就是这样!
相反,如果您想要消除具有特定模式的所有名称:
new_data = [Dict for Dict in data if not Dict ["name"].startswith ("foobar")]
这应该是可行的
顺便说一句,我知道以类型命名变量几乎不是一个好主意,我只是为了清楚起见才这么做的。
https://stackoverflow.com/questions/50935272
复制相似问题