无论Python字典中的第一级密钥如何,如何快速访问与特定二级密钥对应的所有值?

Tap*_*Dey 0 python dictionary

我有一个Python字典,如:

Mydict = {'a':{'y':1,'x':5},'b':{'y':10,'x':8}}

有没有快速方法来访问与键对应的值:'x',在这种情况下是二级键,而不管第一级键?

我知道可以使用for循环来完成:

mylist=[]
for k in Mydict.keys():
    mylist.append(Mydict[k]['x'])
Run Code Online (Sandbox Code Playgroud)

但它有什么快速的一线方法吗?

Inb*_*ose 5

使用list-comprehension:

mylist = [v['x'] for v in Mydict.values()]
Run Code Online (Sandbox Code Playgroud)

由于您不需要外键,因此只需迭代内部词,即可获得所需的'x'值.

注意:这只有在每个内部字典都有'x'密钥时才有效,并且为了最大限度地减少错误,您可以这样做:

mylist = [v.get('x', None) for v in Mydict.values()]
Run Code Online (Sandbox Code Playgroud)

这将起相同作用,只有'x'在字典中没有键时,它才会返回None而不是KeyError异常.

对于时间安排,以及看哪种方法最好,请看Thorsten Kranz的答案