[英]How to convert 2 list in a python dict?
當我壓縮 2 個列表以創建 python dict 時,只返回 ak,v,但我的 2 個列表的長度 = 5。
我的清單是這樣的:
Date_List = ['2019-11-04', '2019-11-04', '2019-11-04', '2019-11-04', '2019-11-04']
Gains_List = [0.0, -0.16873767942313656, 0.7362161773647236, -0.13807995856330857, 0.2844974266425382]
兩者的長度相等,因此,我嘗試使用 dict comprehension 創建一個 dict:
accumulated = {k: v for k, v in zip(new_data_list, ganhos)}
但是,當我打印累積時,返回只有一個值,例如:
{'2019-11-04': 0.2844974266425382}
發生的另一件事是日期'2019-11-04' 的值為0.00,但是當我壓縮時,dict 獲取 Gains_List 中的最后一個值並放入 dict 中的第一個值。
結果應該是這樣的:
{2019-11-04: 0.000000, 2019-11-05: -0.168738, 2019-11-06: 0.736216, 2019-11-07: -0.138080, 2019-11-08: 0.284497}
這背后的原因是,當您迭代zip
命令的結果時,您正在更新結果字典而不是擴展它。
zip
命令生成一個元組數組:
[('2019-11-04', 0.0), ('2019-11-04', -0.16873767942313656), ...]
然后你想從每個元組(鍵,值)中創建一個字典。 但是鍵總是相同的,因此 Python 正在更新現有鍵而不是擴展字典,因為每個鍵都必須是唯一的。
你的代碼其實很好! 它完全符合您的期望。 但是,您肯定知道,Python 的字典具有{key: value}
格式,其中每個鍵都是唯一的。 這就是出錯的地方。 Date_List
中的值都是'2019-11-04'
,並且由於您使用它作為字典的鍵,理解不斷迭代地更改'2019-11-04'
鍵下的值從0.0
(第一個元素Gains_List
)到0.2844974266425382
(的最后一個元素Gains_List
)。
如果你堅持讓所有的鍵都一樣,你可以把它變成一個元組數組,或者一個以鍵和Gains_List
中的所有值作為值的字典。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.