You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优雅实现字典中各列表内所有整数的乘法操作?

字典列表元素批量乘整数的优雅实现

针对你提出的需求,这里有两种简洁优雅的实现方式,同时先解释下你给出的代码无效的原因:

为什么之前的代码无效?

  • 第一段代码:Python的整数是不可变类型,循环里的i是列表元素的临时副本,i *=3只是生成了新的整数对象,并不会修改原列表中的元素,因此字典里的列表完全没变化。
  • 第二段代码:val = [val[s]*2/3 ...]是给循环内的局部变量val赋值了新列表,但字典中存储的是原列表的引用,这个操作不会更新字典里的内容。
  • 第三段代码:逻辑可行但写法冗余,重复访问mydict[key],且循环变量命名容易造成误解,不够直观。

优雅实现方式

方式1:原地修改原列表(保留原字典结构)

如果需要直接修改原字典中的列表,不需要生成新字典,可以用这种方式:

mydict = {'a':[1,2,3],'b':[3,4,5],'c':[8,7,6]}
multiplier = 3  # 你需要的乘数

for lst in mydict.values():
    for idx in range(len(lst)):
        lst[idx] *= multiplier

列表是可变类型,直接通过索引修改元素会同步更新字典中的列表内容,效率高且代码简洁。

方式2:字典推导式生成新字典(更简洁)

如果可以生成新字典替代原字典,用字典推导式一行就能搞定:

mydict = {'a':[1,2,3],'b':[3,4,5],'c':[8,7,6]}
multiplier = 3

mydict = {key: [num * multiplier for num in lst] for key, lst in mydict.items()}

这种写法可读性强,逻辑清晰,是Pythonic的实现方式。

内容的提问来源于stack exchange,提问作者Lilly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:21:28