【问题标题】:Retrieve the unique keys (second dimension) of a 2 dimensional dictionary in python?在python中检索二维字典的唯一键(第二维)?
【发布时间】:2026-02-05 09:05:01
【问题描述】:

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

【问题讨论】:

  • 投反对票的人,为什么投反对票?
  • {x for d in d2_dic.values() for x in d.keys()}

标签: python arrays dictionary


【解决方案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 中不起作用

【讨论】: