当前位置: 首页 > 知识库问答 >
问题:

如何编写返回dict并替换某些元素的表达式?[副本]

荀嘉熙
2023-03-14

除了替换(修改、替换)一些元素之外,还能写出一个对现有字典进行计算的简洁表达式吗?示例:

a = {'x': 3, 'y': 8}

我想编写一个表达式,其计算结果为一个dict,其中“x”元素的值递增1:

{'x': 4, 'y': 8}

我不想修改a(如a['x']=1);我想将a视为不可变的。我可以这样做:

a = {'x': 3, 'y': 8}
a_copy = a.copy()
a_copy['x'] += 1

然后参考副本。但是有没有一种更简洁的方法不需要额外的变量呢?(我只需要引用结果字典一次。)性能不是问题。

字典理解可以用来生成新字典,但是我想要一个返回现有字典的轻微变化的表达式。

共有2个答案

茅星雨
2023-03-14

您可以使用字典理解,仅递增要递增的键的值

#I took the keys in a list if you want to increment more keys
keys_to_incr = ['x']
a = {'x': 3, 'y': 8}

#Increment value if key falls in keys_to_incr, else leave value as0is
a_copy = {k: v+1 if k in keys_to_incr else v for k, v in a.items()}
print(a_copy)

输出将是

{'x': 4, 'y': 8}
曾典
2023-03-14

有点晦涩,但做的工作,只工程以来Python 3.5:

a = {'x': 3, 'y': 8}
a_copy = {**a, 'x': a['x'] + 1}
print(a_copy)
# {'x': 4, 'y': 8}

更好的方法是使用理解:

a_copy = {k: v + 1 if k == 'x' else v for k, v in a.items()}
 类似资料:
  • 本文向大家介绍如何编写JSP表达式?,包括了如何编写JSP表达式?的使用技巧和注意事项,需要的朋友参考一下 JSP表达式元素包含一种脚本语言表达式,该脚本语言表达式经过评估,转换为String,并插入该表达式出现在JSP文件中的位置。 由于表达式的值已转换为字符串,因此可以在JSP文件的一行文本中使用表达式,无论是否用HTML标记。 expression元素可以包含根据Java语言规范有效的任何表

  • 所以基本上我的程序是这样的: 它创建包含月份和作为值的购买列表的映射(每个购买包含一个价格)。 有什么方法可以做到这一点吗?

  • 本文向大家介绍html元素哪些标签是不可替换元素?哪些是可替换元素?相关面试题,主要包含被问及html元素哪些标签是不可替换元素?哪些是可替换元素?时的应答技巧和注意事项,需要的朋友参考一下 (replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。也就是说,css 可以影响元素但是不能影响其内容的显示。 可替换元素: …

  • 我想以firstName和lastname的形式获得输出。怎么用正则表达式做,有什么想法吗?

  • 我有一个字符串向量,如下所示:。出于某种原因,后面有随机/不同的数字,我正在尝试删除它们。使用正则表达式,我如何告诉R移除或替换后面的数字,所以我最终得到。我对Regex了解不多,所以如果有人不仅能提供代码,还能提供对代码的简要解释,我将非常感谢。谢了!

  • 给定以下标记: 如何在。分隔符后选择类。first和。second?我尝试了以下几点: 然而,这似乎并不奏效。我以为这是这样的,从左到右: 既然它不能工作,我想我误解了其中一个选择器的功能。感谢任何帮助(或这方面的替代方案)。 PS: 标记来自外部源。虽然我可以在技术上用JS添加一个类,但如果可能的话,我更倾向于不添加。我也尝试过使用“:not”选择器,但我也没有得到它的工作。 谢谢 编辑: 在屏