我有兩個串列,一個包含鍵串列,另一個包含按時間順序按鍵分配給每個鍵的值。
例如;
key_list = ['cat', 'dog', 'salamander']
value_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
我正在尋找一種采用這兩個串列的快速方法,并從中可以吐出一個看起來像這樣的字典:
key_value_pairs = {
'cat': [1, 4, 7],
'dog': [2, 5, 8],
'salamander': [3, 6, 9]
}
無論值的長度如何,我都在尋找一種方法來遍歷每個值并將它們修改為包含 key_list 中每個專案的一個條目的字典。有任何想法嗎?
uj5u.com熱心網友回復:
key_value_pairs = {k: [v for v_i, v in enumerate(value_list) if v_i % len(key_list) == k_i] for k_i, k in enumerate(key_list)}
編輯:這是一個有趣的單行,但它的時間復雜度比以下解決方案更差,它不使用任何嵌套回圈:
lists = [[] for _ in key_list]
for i, v in enumerate(value_list):
lists[i % len(key_list)].append(v)
key_value_pairs = dict(zip(keys, lists))
uj5u.com熱心網友回復:
這是在字典理解中使用串列切片的一種方法。
len_key = len(key_list)
key_value_pairs = {k: value_list[i::len_key] for i, k in enumerate(key_list)}
輸出:
{'cat': [1, 4, 7], 'dog': [2, 5, 8], 'salamander': [3, 6, 9]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413396.html
標籤:
上一篇:轉換串列中的字典
