簡體   English   中英

如何在python dict中轉換2個列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM