无法打印嵌套dict键的列表?

2024-05-23 13:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一句话看起来是这样的:

{'Tesco': [{'Parking': 'True', 'TrolleyHire': True,
  'Location': {'Address': {'BuildingName': 'Church Street',
             'BuildingNumber': '14', 'City' : 'London'}, 
  'Permit' = True},

基本上它是一个dict,其中的键包含一个列表形式的嵌套dict。在

我想打印出上面第一个“Tesco”键中的所有嵌套键。在

我试过:

^{pr2}$

但是我一直得到AttributeError:“str”对象没有属性“keys”。在

上面的钥匙包含特易购的钥匙和另一把钥匙。在

上面的key2包含与Tesco密钥相关联的dict(键/值对)列表。在

key2.keys()应该提供与该dict相关联的键列表,但它似乎不太起作用!在

我不想让一个函数为我做这件事。在

显然这是一个非常简单的解决办法,但我就是搞不懂。 我已经花了5个小时在这上面,现在我正式放弃了,因为它看起来应该非常简单


Tags: truestreet列表addresslocationkeysdict钥匙
2条回答

使用.values()可能会更优雅:

for sub_list in dict.values():
    for sub_dict in sub_list:
        print(sub_dict.keys())

它对我有用:

dict = {
 'Tesco': [{'Parking': 'True', 'TrolleyHire': True,
 'Location': {'Address': {'BuildingName': 'Church Street',
 'BuildingNumber': '14', 'City' : 'London'}, 
 'Permit': True}}]
}

for key in dict:
    for key2 in dict[key]:
        print (key2.keys())

打印:

^{pr2}$

你现在用的那本词典一定是这本吗?我不得不在结尾加些东西来完成它。在

编辑:在看到原始代码后。

正如您所说,JSON正在创建一个包含两个键的dict-Scheme和ChargeDevice。迭代这些键中的每一个。在

在第一个过程中,key等于"Scheme"。在

然后说for key2 in data[key],它获取与“Scheme”相关联的字典并遍历它的键。在

问题是key2总是代表一个键串-而字符串没有键,只有dict有键。例如,key2将采用值“SchemeCode”,它是一个字符串,而您调用的是key2.keys()-字符串没有keys()方法,因此会出现错误。你可能只想print(key2)。在

编辑2

我不确定我是否完全理解您需要什么,但是下面将在主指令的第二级打印一个没有重复项的键列表

key_names = []
for key in data:
    for key2 in data[key]:
        if type(key2) == str and key2 not in key_names:
            key_names.append(key2)
        elif type(key2) == dict:
            for key3 in key2.keys():
                if key3 not in key_names:
                    key_names.append(key3)
print(key_names)

如果你想任意深入,你需要使用一个递归调用自己的函数。在

相关问题 更多 >