qdict
1.0.0
> pip install qdict
Iterable(List[dict], dict, List[Tuple[key, value]])에 대해 쿼리를 실행하고 필터를 적용합니다.
필터는 쿼리 키 반복에 따라 수평으로 적용됩니다. 즉, 쿼리에 키가 있고 이 키가 연산자가 아니고 해당 값이 사전인 경우 이 사전은 쿼리 및 확인할 개체 내에서 격리됩니다. .
주의: 객체에 쿼리에 지정된 키가 없으면 최종 결과에 객체가 반환되지 않습니다.
모든 운영자는 개체의 수준을 존중합니다.
$or : 쿼리 목록입니다.
from qdict import find
obj = [{ "a" : 1 , "b" : { "c" : "Positive" }}, { "a" : 1 , "b" : { "c" : "Negative" }},
{ "a" : 1 , "b" : { "c" : "Undefined" }}, { "a" : 1 }]
result = find ( obj , {
"$or" : [{ "b" : { "c" : "Positive" }},
{ "$not" : { "$has" : "b" }}]
})
r = list ( result )
print ( r ) # [{'a': 1, 'b': {'c': 'Positive'}}, {'a': 1}]
$not : 부정 표현
{ "a" : { "$not" : 1 }}
$custom : 메서드를 동적으로 정의합니다. (func, 키이름1, 키이름2, ..., 키이름N). 각 키 이름은 키 값 또는 없음을 갖는 매개변수입니다.
from qdict import find
obj = [
{ "a" : 1 , "b" : True , "c" : { "a" : 1 }, "d" : { "a" : 1 }},
{ "a" : 3 , "b" : False , "c" : { "a" : 6 }}
]
def pair ( num ):
return num % 2 == 0
query = {
"c" : { "$custom" : ( pair , "a" )}
}
print ( list ( find ( obj , query ))) # [{"a": 3, "b": False, "c": {"a": 6}}]
$has : 객체에 키가 포함되어 있는지 확인합니다.
$contains : 목록(객체)에 항목(쿼리)이 포함된 경우
$in : 값(객체)이 목록(쿼리)에 포함되어 있는 경우
from qdict import find
# simple search
obj = [{ "a" : 1 , "b" : False }, { "a" : 2 , "b" : True }, { "b" : True }]
result = find ( obj , { "b" : True })
print ( list ( result )) # [{'a': 2, 'b': True}, {'a': 3, 'b': True}]
result = find ( obj , { "$has" : "a" })
print ( list ( result )) # [{'a': 1, 'b': False}, {'a': 2, 'b': True}]
result = find ( obj , { "$not" : { "$has" : "a" }})
print ( list ( result )) # [{'b': True}]
# search with subkeys
obj = [{ "a" : 1 , "b" : { "c" : "Positive" }}, { "a" : 1 , "b" : { "c" : "Negative" }},
{ "a" : 1 , "b" : {}}]
result = find ( obj , { "b" : { "c" : "Negative" }})
print ( list ( result )) # [{'a': 1, 'b': {'c': 'Negative'}}]
# $or
obj = [{ "a" : 1 , "b" : { "c" : "Positive" }}, { "a" : 1 , "b" : { "c" : "Negative" }},
{ "a" : 1 , "b" : { "c" : "Undefined" }}, { "a" : 1 }]
result = find ( obj , {
"$or" : [{ "b" : { "c" : "Positive" }},
{ "$not" : { "$has" : "b" }}]
})
print ( list ( result )) # [{'a': 1, 'b': {'c': 'Positive'}}, {'a': 1}]