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

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

使用列表理解修改字典列表

使用列表理解修改字典列表

開滿天機 2021-04-09 18:15:00
所以我有以下字典清單myList = [{'one':1, 'two':2,'three':3},          {'one':4, 'two':5,'three':6},          {'one':7, 'two':8,'three':9}]這只是我所擁有字典的一個例子。我的問題是,可以使用列表理解以某種方式將two所有字典中的say鍵修改為它們的值的兩倍嗎?我知道如何使用列表理解來創建字典的新列表,但是不知道如何修改它們,我想出了類似的方法new_list = { <some if condiftion> for (k,v) in x.iteritems() for x in myList  }我不確定如何在中指定條件,<some if condiftion>我想正確的嵌套列表理解格式也正確嗎?我想要像這樣的示例的最終輸出[ {'one':1, 'two':4,'three':3},{'one':4, 'two':10,'three':6},{'one':7, 'two':16,'three':9}  ]
查看完整描述

3 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

將列表理解與dict嵌套嵌套一起使用:


new_list = [{ k: v * 2 if k == 'two' else v for k,v in x.items()} for x in myList]

print (new_list)

[{'one': 1, 'two': 4, 'three': 3}, 

 {'one': 4, 'two': 10, 'three': 6}, 

 {'one': 7, 'two': 16, 'three': 9}]


查看完整回答
反對 回復 2021-04-20
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

在python 3.5+中,您可以在PEP 448中引入的dict文字中使用新的解包語法。這將創建每個字典的副本,然后覆蓋鍵的值two:


new_list = [{**d, 'two': d['two']*2} for d in myList]

# result:

# [{'one': 1, 'two': 4, 'three': 3},

#  {'one': 4, 'two': 10, 'three': 6},

#  {'one': 7, 'two': 16, 'three': 9}]


查看完整回答
反對 回復 2021-04-20
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

一個簡單的for循環就足夠了。但是,如果要使用字典理解,我發現定義映射字典比三元語句更易讀和可擴展:


factor = {'two': 2}


res = [{k: v*factor.get(k, 1) for k, v in d.items()} for d in myList]


print(res)


[{'one': 1, 'two': 4, 'three': 3},

 {'one': 4, 'two': 10, 'three': 6},

 {'one': 7, 'two': 16, 'three': 9}]


查看完整回答
反對 回復 2021-04-20
  • 3 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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