【发布时间】:2018-11-27 18:01:38
【问题描述】:
各位晚安,
我有以下代码“就地”修改字典值
translate1 = {k:(0 if v > 300 and v < 900 else v) for k, v in translate1.items()}
translate1 = {k:(1 if v > 1400 and v < 2100 else v) for k, v in translate1.items()}
translate1 = {k:(2 if v > 8700 and v < 9100 else v) for k, v in translate1.items()}
translate1 = {k:(3 if v > 3800 and v < 4100 else v) for k, v in translate1.items()}
translate1 = {k:(4 if v > 6400 and v < 7000 else v) for k, v in translate1.items()}
我的问题是,可以通过列表理解实现类似的目标吗?我希望所有值都在同一个列表中按顺序排列。
提前致谢
【问题讨论】:
-
实际上并没有“就地”完成。创建一个匿名字典,然后分配与您开始时相同的名称。此外,与其运行类似的字典理解 5 次,为什么不使用查找函数来分配值 0-4?
-
你可以做列表推导,是的。您能否向我们展示您的预期结果的示例?
-
我认为理解在这里不是一个理想的工具。使用正常的循环,因为你有太多的条件。
-
这里没有就地修改。
标签: python python-3.x list dictionary list-comprehension