如何从嵌套字典创建新字典?
How to create new dictionaries from nested dictionary?
我有一个嵌套字典。如何访问它们并得到如下结果:
dict_lbl = {
"lbl1":{"name":"label1","item1":"Accounts", "item2":"kannagu", "shortcut":"F1","printitem":"You clicked label1"},
"lbl2":{"name":"label2","item1":"Inventory", "item2":"Saragu", "shortcut":"F2","printitem":"You clicked label2"},
"lbl3":{"name":"label3","item1":"Manufacture","item2":"Thayarippu", "shortcut":"F3","printitem":"You clicked label3"},
"lbl4":{"name":"label4","item1":"PayRoll", "item2":"Sambalam", "shortcut":"F4","printitem":"You clicked label4"}
}
需要如下结果:
dict_name = {"lbl1":"label1","lbl2":"label2","lbl3":"label3","lbl4":"label4"}
dict_item1 ={"lbl1":"Accounts","lbl2":"Inventory","lbl3":"Manufacture","lbl4":"PayRoll"}
dict_item2 ={"lbl1":"kannagu","lbl2":"saragu","lbl3":"Thayaripu","lbl4":"Sambalam"}
dict_shortcut ={"lbl1":"F1","lbl2":"F2","lbl3":"F3","lbl4":"F4"}
dict_printitem = {"lbl1":"You clicked label1","lbl2":"You clicked label1","lbl3":"You clicked label1","lbl4":"You clicked label1"}
使用字典理解:
dict_names = {k: v['name'] for k, v in dict_lbl.items()}
dict_item1 = {k: v['item1'] for k, v in dict_lbl.items()}
dict_item2 = {k: v['item2'] for k, v in dict_lbl.items()}
# etc.
dict_name = {k: v['name'] for k, v in dict_lbl.items()}
dict_item1 = {k: v['item1'] for k, v in dict_lbl.items()}
# etc...
您可以在单个嵌套理解中执行此操作以生成一个字典的字典:
>>> dict_lbl = {
... "lbl1":{"name":"label1","item1":"Accounts", "item2":"kannagu", "shortcut":"F1","printitem":"You clicked label1"},
... "lbl2":{"name":"label2","item1":"Inventory", "item2":"Saragu", "shortcut":"F2","printitem":"You clicked label2"},
... "lbl3":{"name":"label3","item1":"Manufacture","item2":"Thayarippu", "shortcut":"F3","printitem":"You clicked label3"},
... "lbl4":{"name":"label4","item1":"PayRoll", "item2":"Sambalam", "shortcut":"F4","printitem":"You clicked label4"}
... }
>>> dict_key = {k: {n: d[k] for n, d in dict_lbl.items()} for k in {k for d in dict_lbl.values() for k in d}}
>>> import pprint
>>> pprint.pprint(dict_key)
{'item1': {'lbl1': 'Accounts',
'lbl2': 'Inventory',
'lbl3': 'Manufacture',
'lbl4': 'PayRoll'},
'item2': {'lbl1': 'kannagu',
'lbl2': 'Saragu',
'lbl3': 'Thayarippu',
'lbl4': 'Sambalam'},
'name': {'lbl1': 'label1',
'lbl2': 'label2',
'lbl3': 'label3',
'lbl4': 'label4'},
'printitem': {'lbl1': 'You clicked label1',
'lbl2': 'You clicked label2',
'lbl3': 'You clicked label3',
'lbl4': 'You clicked label4'},
'shortcut': {'lbl1': 'F1', 'lbl2': 'F2', 'lbl3': 'F3', 'lbl4': 'F4'}}
然后您可以根据需要执行 dict_name = dict_key['name']
等操作,但实际上您可能会发现将其保存在单个嵌套字典中更容易。
我有一个嵌套字典。如何访问它们并得到如下结果:
dict_lbl = {
"lbl1":{"name":"label1","item1":"Accounts", "item2":"kannagu", "shortcut":"F1","printitem":"You clicked label1"},
"lbl2":{"name":"label2","item1":"Inventory", "item2":"Saragu", "shortcut":"F2","printitem":"You clicked label2"},
"lbl3":{"name":"label3","item1":"Manufacture","item2":"Thayarippu", "shortcut":"F3","printitem":"You clicked label3"},
"lbl4":{"name":"label4","item1":"PayRoll", "item2":"Sambalam", "shortcut":"F4","printitem":"You clicked label4"}
}
需要如下结果:
dict_name = {"lbl1":"label1","lbl2":"label2","lbl3":"label3","lbl4":"label4"}
dict_item1 ={"lbl1":"Accounts","lbl2":"Inventory","lbl3":"Manufacture","lbl4":"PayRoll"}
dict_item2 ={"lbl1":"kannagu","lbl2":"saragu","lbl3":"Thayaripu","lbl4":"Sambalam"}
dict_shortcut ={"lbl1":"F1","lbl2":"F2","lbl3":"F3","lbl4":"F4"}
dict_printitem = {"lbl1":"You clicked label1","lbl2":"You clicked label1","lbl3":"You clicked label1","lbl4":"You clicked label1"}
使用字典理解:
dict_names = {k: v['name'] for k, v in dict_lbl.items()}
dict_item1 = {k: v['item1'] for k, v in dict_lbl.items()}
dict_item2 = {k: v['item2'] for k, v in dict_lbl.items()}
# etc.
dict_name = {k: v['name'] for k, v in dict_lbl.items()}
dict_item1 = {k: v['item1'] for k, v in dict_lbl.items()}
# etc...
您可以在单个嵌套理解中执行此操作以生成一个字典的字典:
>>> dict_lbl = {
... "lbl1":{"name":"label1","item1":"Accounts", "item2":"kannagu", "shortcut":"F1","printitem":"You clicked label1"},
... "lbl2":{"name":"label2","item1":"Inventory", "item2":"Saragu", "shortcut":"F2","printitem":"You clicked label2"},
... "lbl3":{"name":"label3","item1":"Manufacture","item2":"Thayarippu", "shortcut":"F3","printitem":"You clicked label3"},
... "lbl4":{"name":"label4","item1":"PayRoll", "item2":"Sambalam", "shortcut":"F4","printitem":"You clicked label4"}
... }
>>> dict_key = {k: {n: d[k] for n, d in dict_lbl.items()} for k in {k for d in dict_lbl.values() for k in d}}
>>> import pprint
>>> pprint.pprint(dict_key)
{'item1': {'lbl1': 'Accounts',
'lbl2': 'Inventory',
'lbl3': 'Manufacture',
'lbl4': 'PayRoll'},
'item2': {'lbl1': 'kannagu',
'lbl2': 'Saragu',
'lbl3': 'Thayarippu',
'lbl4': 'Sambalam'},
'name': {'lbl1': 'label1',
'lbl2': 'label2',
'lbl3': 'label3',
'lbl4': 'label4'},
'printitem': {'lbl1': 'You clicked label1',
'lbl2': 'You clicked label2',
'lbl3': 'You clicked label3',
'lbl4': 'You clicked label4'},
'shortcut': {'lbl1': 'F1', 'lbl2': 'F2', 'lbl3': 'F3', 'lbl4': 'F4'}}
然后您可以根据需要执行 dict_name = dict_key['name']
等操作,但实际上您可能会发现将其保存在单个嵌套字典中更容易。