我有一个二维字典(名为d2_dic)。我知道如何通过d2_dic.keys()获取第一个维度的唯一键(它始终是唯一的)。但是如何获得第二维的唯一键?
from collections import defaultdict
d2_dic = defaultdict(dict)
d2_dic['1']['a'] = 'Hi'
d2_dic['1']['b'] = 'there'
d2_dic['2']['a'] = '.'
要获取第一维中的唯一键,我只需要执行d2_dic.keys(){o / p = 1,2} 如何检索第二维的唯一键??
我需要[a,b]
的o / p答案 0 :(得分:1)
实体d2_dic['1']
本身就是一个字典(与d2_dic['2']
相同)。因此,您可以使用d2_dic['1'].keys()
来获取该词典的键。如果您想要第二维中所有可能键的列表,那么您可以执行以下操作。
mykeys = []
for k in d2_dic.keys() :
mykeys.extend(d2_dic[k].keys())
# this removes duplicates but destroys order
mykeys = list(set(mykeys))
print mykeys # ['a', 'b']
显然,根据@vaultah:mykeys = list({x for d in d2_dic.values() for x in d.keys()})
的评论,您也可以在列表理解的一行中执行此操作。
你必须小心这一点,因为d2_dic['2'][mykeys[1]]
将会在KeyError: 'b'
中消失。您可能希望将一些代码包装在try和except语句中。例如:
for i in d2_dic.keys() :
for j in mykeys :
try :
d2_dic[i][j]
except KeyError :
d2_dic[i][j] = None
print i, j, d2_dic[i][j]
请注意,这些打印语句不能在python 3中运行