2017-03-09 28 views
2

我想创建一个Python dict其成员本身dict秒,他们两个是一样的:如何定义一个具有相同值的多个子字典的Python字典?

servers = { 
    "test": { 
    "auth_token": "some-auth-token", 
    "client_id": "some-client-id", 
    "client_secret": "some-client-secret", 
    "scope": "some-scope" 
    }, 
    "live": { 
    "auth_token": "auth-token-for-live", 
    "client_id": "client-id-for-live", 
    "client_secret": "client-secret-for-live", 
    "scope": "scope-for-live" 
    }, 
    "demo": servers["test"] # this doesn't work, but this is what I need 
} 

demo服务器定义是一样的我test服务器定义,但我不希望不得不重复一遍 - 有没有办法做到这一点?

+0

在一条语句中无法 – timgeb

+0

让我们做一些改变,我的演示配置=>'服务器[“示范”] [“client_secret”] =“foo'' =>进入的堆栈溢出问题,”我的测试服务器突然失败而没有改变,为什么?“我真的不认为复制粘贴是一件坏事。 – polku

+0

你能先用测试和活键创建字典吗?然后,只需更新与演示作为关键字和测试为值例如:'servers.update({'demo':servers ['test']})' –

回答

0
x = { 
    "auth_token": "some-auth-token", 
    "client_id": "some-client-id", 
    "client_secret": "some-client-secret", 
    "scope": "some-scope" 
} 

servers = { 
    "test": x, 

    "live": { 
    "auth_token": "auth-token-for-live", 
    "client_id": "client-id-for-live", 
    "client_secret": "client-secret-for-live", 
    "scope": "scope-for-live" 
    }, 

    "demo": x 

} 

例如, https://repl.it/GO6Y/0

+0

是的,当然我可以做到这一点;我想知道在“服务器”本身的定义中是否有办法做到这一点。 –

+0

“我该如何做X?” “像这样”“当然就是这样,我实际上是在问一个不同的问题,但保持它的秘密,因为原因” – TessellatingHeckler

0
servers = { 
    "test": { 
    "auth_token": "some-auth-token", 
    "client_id": "some-client-id", 
    "client_secret": "some-client-secret", 
    "scope": "some-scope" 
    }, 
    "live": { 
    "auth_token": "auth-token-for-live", 
    "client_id": "client-id-for-live", 
    "client_secret": "client-secret-for-live", 
    "scope": "scope-for-live" 
    }} 

servers['demo'] = servers['test'] 
+0

请注意,更改为“测试”会自动更新“演示”,反之亦然。 – CaptainKinematics

相关问题