[英]Pythonic Way To Replace Dict Keys and/or Values
我正在尋找一種“有效”的方式來遍歷字典,並替換以“ var”開頭的任何鍵或值。
例如,如果我有這個:
data = {
"user_id": "{{var_user_id}}",
"name": "bob",
"{{var_key_name}}": 4
}
我有這個變量值的字典:
variables = {
"user_id": 10,
"key_name": "orders_count"
}
然后,我希望我的最終數據字典看起來像這樣:
data = {
"user_id": 10,
"name": "bob",
"orders_count": 4
}
簡單地說:
result = {}
for k,v in data.items():
if '{{var_' in k: # if `{{var..}}` placeholder is in key
result[variables[k[6:-2]]] = v
elif '{{var_' in v: # if `{{var..}}` placeholder is in value
result[k] = variables[v[6:-2]]
else:
result[k] = v
print(result)
輸出:
{'user_id': 10, 'orders_count': 4, 'name': 'bob'}
由於您將其像文本模板語言一樣對待(如果可以,為什么不使它成為string.format(** variable)兼容語法?),請使用文本替換:
import ast
import re
text = re.sub('{{var_(.*?)}}', lambda m: variables[m.groups()[0]], str(data))
data2 = ast.literal_eval(text)
print(data2)
這是一個非常手動的算法,但是這里有:
for key, value in data.iteritems():
if "var" in str(key):
#iterate through "variables" to find the match
elif "var" in str(value):
#iterate through "variables" to find the match
#populate "data" with the key value pair
這可以工作,但是如果您不能保證唯一性 ,那就有點麻煩了,尤其是在需要更換鑰匙的情況下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.