从python中的Json嵌套键获取唯一列表
这是我的Json数据示例从python中的Json嵌套键获取唯一列表,python,Python,这是我的Json数据示例 dict = {'Headers 1': {'sub head 1': { 'birds':['Item 1.1.1', 'Item 1.1.2', 'Item 1.1.3', 'Item 1.1.4'],
dict = {'Headers 1': {'sub head 1': { 'birds':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4'],
'animals':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4']
},
'sub head 2': { 'birds':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4'],
'books':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4']
},
},
'Headers 2': {'sub head 1': { 'bottles':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4'],
'animals':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4']
},
'sub head 2': { 'books':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4'],
'birds':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4']
}
},
'Headers 3': {'sub head 1': { 'bottles':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4'],
'birds':['Item 1.1.1',
'Item 1.1.2',
'Item 1.1.3',
'Item 1.1.4']
}
}
}
在这里,从这个Json数据中,我想获取子标题的所有键的唯一集
['animals','birds','books','bottles']
我会告诉你我到目前为止所做的步骤
现在我不知道如何在python中将这个子键存储到一个唯一的集合?我怎样才能找到唯一的列表?我可以对列表进行排序吗?假设您希望结果不排序,迭代3个级别,并在第三个级别上使用键的数量:
print(set(k for outer in d.values() for inner in outer.values() for k in inner))
# {'birds', 'books', 'animals', 'bottles'}
如果需要列表,请换行:
如果要获得排序列表,请换行:
如果您想要一个有序的结果,请保留一个seen集合以跟踪重复项并将结果存储在列表中:
seen = set()
result = []
for outer in d.values():
for inner in outer.values():
for k in inner:
if k not in seen:
seen.add(k)
result.append(k)
print(result)
# ['birds', 'animals', 'books', 'bottles']
上述内容也不关心前两个级别上的键,因此您可以迭代字典values()
注意:命名变量
dict
不是一个好主意,因为它会隐藏内置函数 假设您希望结果无序,则迭代3个级别,并在第三个级别上获取键的数量:
print(set(k for outer in d.values() for inner in outer.values() for k in inner))
# {'birds', 'books', 'animals', 'bottles'}
如果需要列表,请换行:
如果要获得排序列表,请换行:
如果您想要一个有序的结果,请保留一个seen集合以跟踪重复项并将结果存储在列表中:
seen = set()
result = []
for outer in d.values():
for inner in outer.values():
for k in inner:
if k not in seen:
seen.add(k)
result.append(k)
print(result)
# ['birds', 'animals', 'books', 'bottles']
上述内容也不关心前两个级别上的键,因此您可以迭代字典values()
注意:命名变量
dict
不是一个好主意,因为它会隐藏内置函数 可以使用设置。比如:
res = set()
for v in dict.values():
for i in v.values():
res.update(set(i.keys()))
print(res) # {'birds', 'animals', 'books', 'bottles'}
就个人而言
我发现这种语法比理解语法更容易阅读。她让你随波逐流,很容易找到突破点,明白你在做什么 可以使用设置。比如:
res = set()
for v in dict.values():
for i in v.values():
res.update(set(i.keys()))
print(res) # {'birds', 'animals', 'books', 'bottles'}
就个人而言
我发现这种语法比理解语法更容易阅读。她让你随波逐流,很容易找到突破点,明白你在做什么 只需使用set()
和。添加(新项目)
到它只需使用set()
和。添加(新项目)