Python中的字典中是否有私钥?

时间:2016-04-29 15:15:20

标签: python json

我有一个数组。我正在使用Tornado用于WebSockets而我正在使用json

servers = {
    'server1': {
         'id1': {
             'message': 'msg from id1',
             'message2': 'msg2 from id1'
             'conn': "(here's Tornado WebSocket class - WebSocket connection)"
         },
         'id2': {
              ...
         }
    },
    'server2': {
        ...
    }
}

我想向每个用户发送json.dumps(servers['server1']),但我不想用conn密钥发送它。是否有像私人(隐藏)键的东西?我想做json.dumps(servers['server1']),我想要的输出是:

'id1': {
    'message': 'msg from id1',
    'message2': 'msg2 from id1'
},
...

2 个答案:

答案 0 :(得分:3)

不,python中没有私有或公共概念。您可以使用嵌套理解:

message = {id_key:{k:data for k,data in id_val.items() if k != 'conn'} 
    for id_key,id_val in servers['server1'].items()}

答案 1 :(得分:1)

是的,您可以使用非字符串键来模拟它们:

conn_key = object()  # sentinel value

servers = {
    'server1': {
         'id1': {
             'message': 'msg from id1',
             'message2': 'msg2 from id1'
             conn_key: "(here's Tornado WebSocket class - WebSocket connection)"
         },
         'id2': {
              ...
         }
    },
    'server2': {
        ...
    }
}

print servers['server1']['id1'][conn_key]

json.dumps(servers, skipkeys=True)