2017-10-06 58 views
2

我有以下的dict對象:的Python 3.6變量替換

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_active": "cn=active,ou=groups,dc=example,dc=com", 
    "is_staff": "cn=staff,ou=groups,dc=example,dc=com", 
    "is_superuser": "cn=superuser,ou=groups,dc=example,dc=com" 
} 

我想從變量定義的IT元素:

# Load environmental variables here 
hostname = os.environ['AUTH_LDAP_SERVER'] 
binduser = os.environ['AUTH_LDAP_BIND_USER'] 
bindgroup = os.environ['AUTH_LDAP_BIND_GROUP'] 
dc1 = os.environ['AUTH_LDAP_BIND_DC1'] 
dc2 = os.environ['AUTH_LDAP_BIND_DC2'] 
bindpassword = os.environ['AUTH_LDAP_PASSWORD'] 

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_active": "cn=active,{bindgroup},dc={dc1),dc={dc2}", 
    "is_staff": "cn=staff,{bindgroup},dc={dc1},dc={dc2}", 
    "is_superuser": "cn=administrators,{bindgroup},dc={dc1},dc={dc2}" 
} 

我怎樣才能插入變量進入字典?

回答

2

在python 3.6+中,您有f-strings

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_active": f"cn=active,{bindgroup},dc={dc1},dc={dc2}", 
    "is_staff": f"cn=staff,{bindgroup},dc={dc1},dc={dc2}", 
    "is_superuser": f"cn=administrators,{bindgroup},dc={dc1},dc={dc2}" 
} 

如果你正在使用Python 3.5或以上,你可以使用format

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_active": "cn=active,{},dc={},dc={}".format(bindgroup, dc1, dc2), 
    "is_staff": "cn=staff,{},dc={},dc={}".format(bindgroup, dc1, dc2), 
    "is_superuser": "cn=administrators,{},dc={},dc={}".format(bindgroup, dc1, dc2) 
} 
5

您只需在要格式化的字符串前添加f即可。關於f-strings的文檔。

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_active": f"cn=active,{bindgroup},dc={dc1},dc={dc2}", 
    "is_staff": f"cn=staff,{bindgroup},dc={dc1},dc={dc2}", 
    "is_superuser": f"cn=administrators,{bindgroup},dc={dc1},dc={dc2}" 
} 

而且,我會用os.getenv避免KeyError異常的。