在python中检索二维字典的唯一键(第二维)?

时间:2014-07-18 17:48:20

标签: python arrays dictionary

我有一个二维字典(名为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

1 个答案:

答案 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中运行