Skip to content

Getting list values with afilter #141

Description

@sehmaschine

I might be missing something, but why does afilter not get dict/list values? Any specific reason for that?

data = [
  {
    "choices": [
      "Charity",
      "Cooperative",
      "Corporation",
      "Educational institution",
      "Public entity",
      "International organisation"
    ]
  },
  {
    "items": [
      {
        "choices": "country"
      }
    ],
  }
]

def afilter(x):
    print x
    return True

res = dpath.util.search(data, "**/choices", yielded=True, afilter=afilter)

Running this results in ...

country
('1/items/0/choices', 'country')

Or to phrase it differently: how can I search for elements which include "Charity"? My current solution looks like this:

res = dpath.util.search(data, "**/choices", yielded=True)

for item in res:
    val = dpath.util.get(data, item[0])
    if "Charity" in val:
        print item[0]

But that would be much simpler if afilter also gets the list of the first element.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions