标签: glom

如何根据列表索引过滤 glom 中的列表?

我希望能够仅过滤掉 1 个或所有小于某个索引的列表项,但 glom 文档的片段部分中的过滤器片段并没有告诉我如何做到这一点。

示例(仅保留列表中的前 2 个项目):

target = [5, 7, 9]
some_glom_spec = "???"

out = glom(target, some_glom_spec)

assert out == [5, 7]
Run Code Online (Sandbox Code Playgroud)

python glom

5
推荐指数
1
解决办法
252
查看次数

使用Python模块Glom,将不规则嵌套列表提取到扁平字典列表中

Glom 使访问复杂的嵌套数据结构变得更加容易。 https://github.com/mahmoud/glom

给定以下玩具数据结构:

target = [
            {
                'user_id': 198,
                'id': 504508,
                'first_name': 'John',
                'last_name': 'Doe',
                'active': True,
                'email_address': 'jd@test.com',
                'new_orders': False,
                'addresses': [
                    {
                        'location': 'home',
                        'address': 300,
                        'street': 'Fulton Rd.'
                    }
                ]
            },
            {
                'user_id': 209,
                'id': 504508,
                'first_name': 'Jane',
                'last_name': 'Doe',
                'active': True,
                'email_address': 'jd@test.com',
                'new_orders': True,
                'addresses': [
                    {
                        'location': 'home',
                        'address': 251,
                        'street': 'Maverick Dr.'
                    },
                    {
                        'location': 'work',
                        'address': 4532,
                        'street':  'Fulton Cir.'
                    },
                ]
            },
        ]
Run Code Online (Sandbox Code Playgroud)

我试图将数据结构中的所有地址字段提取到扁平的字典列表中。

from glom import glom as glom …
Run Code Online (Sandbox Code Playgroud)

python nested python-module data-structures glom

3
推荐指数
1
解决办法
2282
查看次数

通过使用 Python Glom 过滤其他属性的列表来获取嵌套属性的值

我有一个像这样的数据对象:

data = {
    'props': {
        'items': [
            {'name': 'a', 'content': 'plain'},
            {'name': 'b', 'content': {'id': 'x'}},
            {'name': 'c', 'content': {'id': 'y'}},
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

使用glom,我想获得等于的项目x的值。idnameb

到目前为止,我有这个:

from glom import glom
from glom import SKIP


glom(data, ('props.items', [lambda i: i if i['name']=='b' else SKIP]))
Run Code Online (Sandbox Code Playgroud)

返回:

[{'name': 'b', 'content': {'id': 'x'}}]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚使用什么规范(用glom说法)来提取返回列表中的唯一元素,然后提取id.

我可以调用 glom 两次:

glom(glom(data, ('props.items', [lambda i: i if i['name']=='b' else SKIP]))[0], 'content.id')
Run Code Online (Sandbox Code Playgroud)

但我认为应该有一种方法可以在一个电话中做到这一点。关于如何实现这一目标的任何想法?

python json glom

3
推荐指数
1
解决办法
540
查看次数

有没有办法使用glom库将一个dicts列表合并到一个单独的dict中?

我正在使用glom项目.

有没有办法转换[{"id": 1, "name": "foo"}, {"id": 2, "name": "bar"}]{1: "foo", 2: "bar"}

python glom

2
推荐指数
1
解决办法
110
查看次数

标签 统计

glom ×4

python ×4

data-structures ×1

json ×1

nested ×1

python-module ×1