Skip to content

Getting list values with afilter #141

@sehmaschine

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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions