首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中,如何从列表中删除某些数据以创建新数据?

在Python中,如何从列表中删除某些数据以创建新数据?
EN

Stack Overflow用户
提问于 2018-06-20 02:58:30
回答 1查看 48关注 0票数 0

我从一个json端点拉取数据,它返回一个列表。

这个列表中的一些元素,我想要去掉。我只对某些元素感兴趣。

我是这样提取数据的:

代码语言:javascript
复制
# Pull the data
url = "https://my-endpoint.com"
user = 'user1'
pwd = 'password1'
response = requests.get(url, auth=(user, pwd))
data = json.loads(response.text)

有效负载看起来类似于:

代码语言:javascript
复制
[{
        "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“中的数据。

新的列表是我要迭代的内容,以提取我需要的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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")]

这应该是可行的

顺便说一句,我知道以类型命名变量几乎不是一个好主意,我只是为了清楚起见才这么做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50935272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档