[英]Python list comprehension for list of dictd into a list of tuple with a subset of dict key-value pairs
[英]Python: subset of key/value pairs of a dict determines the function to call
我不知道如何用標題中的一句話來最好地描述我的問題,所以這里解釋一下:
我有一個 websocket 連接並從中獲取數據。 數據是 json 格式的字符串。 例如有 3 個鍵/值對:
data = json.loads('{"k1":"id1_a","k2":"id2_a","k3":"value"}')
現在我想調用不同的k1
和k2
組合相應的不同功能。
我的方法如下:我定義了一個配置文件(yaml),如:
combination_a:
k1: "id1_a"
k2: "id2_a"
combination_b:
k1: "id1_b"
k2: "id2_b"
[...]
然后我可以將配置文件導入為 dict 並執行以下操作:
import yaml
config = yaml.safe_load(open("config.yml"))
if config["combination_a"].items() <= data.items():
function_a()
elif config["combination_b"].items() <= data.items():
function_b()
[...]
現在有兩個問題:
if elif [...]
塊的情況下將組合“映射”到特定的 function? 據我所知,python中沒有開關function? 沒有開關 function afaik,但是您可以在字典中定義combination->function
映射並對其進行迭代以檢查哪種情況適用。
如果效率很重要,您甚至可以在 dict 中找到相關鍵以獲得更快的查找時間。
這是基本版本:
combination_function_map = {
'combination_a': function_a,
'combination_b': function_b
}
for key, func in combination_function_map.items():
if config[key].items() <= data.items():
func()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.