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

如何编写返回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 可以影响元素但是不能影响其内容的显示。 可替换元素: …

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

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

  • 看起来很简单,但我很难想出一个好的方法来做到这一点。这在正则表达式中应该是可能的。在中替换。NET VB。。。对不起,我在Regex还是个新手。。。 我有一个包含销售收据的长字符串。。。。我不想在某些情况下显示美元金额,因此我想在显示字符串之前将所有金额替换为0.00。即。 原始字符串: 订单详细信息:项目一1@$33.99$33.99项目二100@$3.99$399.00项目三10@$333.9