使用通配符键元素访问Python dict

时间:2014-09-19 08:27:29

标签: python dictionary wildcard

鉴于dict(下面的片段),结构将始终相同,但是键名'private'可能会更改名称,而我没有独立的方式来知道{{1}的值是什么密钥的一部分。

'private'

如何参考json = simplejson.loads(open('servers.list', 'r').read()) for server in json['servers']: { "servers": [ { "addresses": { "private": [ { "addr": "10.2.198.244", "version": 4 }, { "addr": "10.4.189.211", "version": 4 } ] } } ] }

一般情况下,这会有效,但这不是用通配符替换'addr'的方法:

'private'

1 个答案:

答案 0 :(得分:1)

对于这个非常人为的例子中的地址0的一次性选择:

>>> addr0 = json['servers'][0]['addresses'].values()[0][0]['addr']
>>> addr0
'10.2.198.244'

更一般地说,很难说。

密钥private会发生什么变化?它会public有机会吗?看起来可能存在addresses字典中可能存在的其他类型的地址(例如公共地址)。您不能在字典中假设特定的键顺序,这意味着您不能依赖dict.values()返回列表索引0处的私有地址。如果没有可靠的密钥,则无法预测。