无需迭代即可读取嵌套字典的简单方法
Simple way to read nested dictionary without iterating
我有一个这样的嵌套字典:
nest_dict = {
"1": {
"Name": X,
"Class": "10",
"Roll_no": 19289,
"Marks": 126
},
"2": {
"Name": Y,
"Class": "12",
"Roll_no": 19290,
"Marks": 124
}
}.
请注意,每个子条目都有相同的键集,即名称、Class、Roll_no、标记。如何获取 all_Names = [X, Y]
、all_Class = [10, 12]
、all_Roll_no = [19289, 19290]
、all_Marks = [126, 124]
的列表,而不必遍历前一级别的条目,即 1,2。应该有一些简单的方法来实现这一点,对吧? (我正在尝试使用 python3 从 json 文件中解析。)
你应该迭代。代码足够简单,快速且高效。我没有看到很多其他解决方法。
示例:
nest_dict = {
"1": {
"Name": "X",
"Class": "10",
"Roll_no": 19289,
"Marks": 126
},
"2": {
"Name": "Y",
"Class": "12",
"Roll_no": 19290,
"Marks": 124
}
}
all_roll_numbers = set()
all_names = set()
all_classes = set()
all_marks = set()
for data in nest_dict.values():
all_names.add(data["Name"])
all_classes.add(data["Class"])
all_roll_numbers.add(data["Roll_no"])
all_marks.add(data["Marks"])
不同的看法:
data = {
"Name": set(),
"Class": set(),
"Roll_no": set(),
"Marks": set()
}
for item in nest_dict.values():
for key, value in item.items():
data[key].add(value)
There should be some simple way to achieve this, right?
这样简单吗?:
import pandas as pd
nest_dict = {
"1": {
"Name": 'X',
"Class": "10",
"Roll_no": 19289,
"Marks": 126
},
"2": {
"Name": 'Y',
"Class": "12",
"Roll_no": 19290,
"Marks": 124
}}
res = pd.DataFrame(nest_dict.values()).T.apply(list,1).to_dict()
>>> res
'''
{'Name': ['X', 'Y'],
'Class': ['10', '12'],
'Roll_no': [19289, 19290],
'Marks': [126, 124]}
all_Names = [y['Name'] for x,y in nest_dict.items()]
等等 'Class', 'Roll_no', ...应该足够简单了。
我有一个这样的嵌套字典:
nest_dict = {
"1": {
"Name": X,
"Class": "10",
"Roll_no": 19289,
"Marks": 126
},
"2": {
"Name": Y,
"Class": "12",
"Roll_no": 19290,
"Marks": 124
}
}.
请注意,每个子条目都有相同的键集,即名称、Class、Roll_no、标记。如何获取 all_Names = [X, Y]
、all_Class = [10, 12]
、all_Roll_no = [19289, 19290]
、all_Marks = [126, 124]
的列表,而不必遍历前一级别的条目,即 1,2。应该有一些简单的方法来实现这一点,对吧? (我正在尝试使用 python3 从 json 文件中解析。)
你应该迭代。代码足够简单,快速且高效。我没有看到很多其他解决方法。
示例:
nest_dict = {
"1": {
"Name": "X",
"Class": "10",
"Roll_no": 19289,
"Marks": 126
},
"2": {
"Name": "Y",
"Class": "12",
"Roll_no": 19290,
"Marks": 124
}
}
all_roll_numbers = set()
all_names = set()
all_classes = set()
all_marks = set()
for data in nest_dict.values():
all_names.add(data["Name"])
all_classes.add(data["Class"])
all_roll_numbers.add(data["Roll_no"])
all_marks.add(data["Marks"])
不同的看法:
data = {
"Name": set(),
"Class": set(),
"Roll_no": set(),
"Marks": set()
}
for item in nest_dict.values():
for key, value in item.items():
data[key].add(value)
There should be some simple way to achieve this, right?
这样简单吗?:
import pandas as pd
nest_dict = {
"1": {
"Name": 'X',
"Class": "10",
"Roll_no": 19289,
"Marks": 126
},
"2": {
"Name": 'Y',
"Class": "12",
"Roll_no": 19290,
"Marks": 124
}}
res = pd.DataFrame(nest_dict.values()).T.apply(list,1).to_dict()
>>> res
'''
{'Name': ['X', 'Y'],
'Class': ['10', '12'],
'Roll_no': [19289, 19290],
'Marks': [126, 124]}
all_Names = [y['Name'] for x,y in nest_dict.items()]
等等 'Class', 'Roll_no', ...应该足够简单了。