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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions