小编Sam*_*lla的帖子

从带有重复键 Python 的字符串制作 dict/json

我有一个可以解析为 json 或 dict 对象的字符串。我的字符串变量如下所示:

    my_string_variable = "{
                            "a":1,
                            "b":{
                                 "b1":1,
                                 "b2":2
                             },  
                            "b": { 
                                "b1":3, 
                                "b2":2,
                                "b4":8
                             } 
                           }"
Run Code Online (Sandbox Code Playgroud)

当我这样做时json.loads(my_string_variable),我有一个 dict 但只保留了键“b”的第二个值,这是正常的,因为 dict 不能包含重复的键。

拥有这样的 defaultdict 的最佳方法是什么:

    result = {
               'a':1,
               'b': [{'b1':1,'b2':2}, { 'b1':3, 'b2':2,'b4':8 } ]
             }
Run Code Online (Sandbox Code Playgroud)

我已经寻找过类似的问题,但它们都将字典或列表作为输入处理,然后创建 defaultdicts 来处理重复的键。

就我而言,我有一个字符串变量,我想知道是否有一种简单的方法可以实现这一点:)

谢谢^^

python string json dictionary

1
推荐指数
1
解决办法
3552
查看次数

遍历Python dict中的嵌套键并在首次出现时中断

我有一个像下面这样的JSON dict:

             "{
                        "a":1,
                        "b":{
                             "b1":False,
                             "b2":{"b21": 2, "b22":8}
                         },  
                        "c": { 
                            "b1":True, 
                            "b2":2,
                            "b4":8
                         },
                        "d":{
                            "b1":False, 
                            "d1":89
                         }
                       }"
Run Code Online (Sandbox Code Playgroud)

我想检查"b1"字典中键的值,并在找到时退出b1=True。如果我检查了整个字典(包括嵌套键),但没有找到b1 = True,那么我想返回False。对于上面的示例,我的函数应返回True。

基本上,我想在第一次出现时破坏代码b1=True并遍历dict的所有键(在所有级别中),如果不存在此出现,则返回False。

这是我想出的:

def isb1True(jsonDoc):
  found = False
    for (key,value) in jsonDoc.iteritems():
        if key=='b1':
            if value==True :
                found=True
                break
        else:
            isb1True(value)
   return found
Run Code Online (Sandbox Code Playgroud)

我的代码总是返回False

python dictionary nested key

1
推荐指数
1
解决办法
463
查看次数

标签 统计

dictionary ×2

python ×2

json ×1

key ×1

nested ×1

string ×1