【发布时间】:2023-04-01 22:08:01
【问题描述】:
我有嵌套的字典,我需要把这个字典串起来
字典示例
data = {
'filter': {
'operator': "and",
'filters': [{
'operator': "or",
'filters': [{
'operator': "and",
'filters': [{
'value': "blue"
}, {
'value': "green"
}]
}, {
'operator': "and",
'filters': [{
'value': "brown"
}, {
'value': "green"
}]
}, {
'value': "green"
}]
}, {
'value': "red"
}]
}
}
我使用递归函数来获取“过滤器”键,但我需要检测括号级别
def recursively(dct, field):
if field in dct:
yield dct[field]
for k in dct:
if isinstance(dct[k], list):
for i in dct[k]:
for j in recursively(i, field):
yield j
最后我需要字符串输出
>>> recursivaly(data['filter'], 'filters')
# result
((blue AND green) OR (brown AND green) OR green) AND NOT red
你能帮帮我吗?
【问题讨论】:
-
标题中的问题具有误导性,有无数种方法可以将字典显示为字符串,您正在寻找转换特定的字典结构以表示逻辑操作
-
为什么最后是
AND NOT red
?我在你的结构中没有看到否定运算符。 -
@Nicolás 因为 AND NOT red 意味着搜索任何不包含 red 的字段
-
@PyDroid 但您的字典中没有“NOT”
-
@AntiMatterDynamite 真的你是对的,我使用 new dict { 'value': "red", 'mean': 'not contains', 'field': 'field_name'}, in 'mean ' 示例:包含、不包含、相等、不相等等
标签:
string
python-3.x
dictionary
converter
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在python 3中将字典对象转换为字符串 - Python技术站