亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

傳遞給 Ordered Dict 創建的列表理解被創建為參考

傳遞給 Ordered Dict 創建的列表理解被創建為參考

HUX布斯 2022-06-22 18:09:53
我正在嘗試為給定的一組鍵創建一個有序的 dic。我要去的結構是`     OrderedDict([('A', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),                   ('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),                   ('C', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),                   ('D', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])])`這是由以下函數創建的。d = OrderedDict.fromkeys(keys, [0 for _ in range(10)])我成功地獲得了所需的結構。問題是 dict 的所有值都被創建為引用。這意味著當我嘗試執行以下操作時,d['A'][1] = "11111" 它會更改給定每個鍵的值。我得到如下結果。    OrderedDict([('A', [0, '11111', 0, 0, 0, 0, 0, 0, 0, 0]),                  ('B', [0, '11111', 0, 0, 0, 0, 0, 0, 0, 0]),                  ('C', [0, '11111', 0, 0, 0, 0, 0, 0, 0, 0]),                  ('D', [0, '11111', 0, 0, 0, 0, 0, 0, 0, 0])])我確實嘗試過 deepcopy 但并沒有真正幫助。我目前的工作是d['A'] = d['A'][:]我不太喜歡上面的解決方案,因為我有大約6mil keys and values.. 所以這樣做有點麻煩。我想知道這樣做的更好方法..以及為什么會這樣。
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

classmethod對所有字典鍵fromkeys使用相同的默認值。

為避免這種情況,請為每個鍵指定一個新實例:

d = OrderedDict((k, [0]*10) for k in keys)


查看完整回答
反對 回復 2022-06-22
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號