Python -如何简化更新字典值以使用它的子字符串更新它

ee7vknir  于 2023-03-24  发布在  Python
关注(0)|答案(3)|浏览(122)

我怎样才能简化这个表达式,而不是重复或将它赋给一个新的变量呢?

dict['key'] = dict['key'][0:100]

在 dart 中

map.update('key', (v)=>  v.substring(0,100));

更新

我在Python中看到了一个update方法,可以用作

dict.update({'key': new_value})

我想要的是某种回调函数,其中包含指向字典原始值的指针。

更新2

巨蟒

dict.update({'key': new_value})

我想要的是

dict.update({'key' *self[0,100]})

其中*self是原始值,而不是使用dict.get('key')

bz4sfanl

bz4sfanl1#

您可以使用dict.update()

product_dict['description'] = "So long decription I won't read"
product_dict.update({'description': product_dict['description'][3:15]})

结果:

>>> product_dict
{'description': 'long decript'}

我不认为有必要寻找另一种方法--这个方法已经很好了。我建议的方法也使用了重复,但看起来更难阅读。

bogh5gae

bogh5gae2#

也许你可以使用dict理解?我认为它非常简洁,可以在一行中更新每个值。
使用Python 3

>>> d = {1: "abcdefghijk", 2 : "abdcefghijk", 3: "abcdefghijk"}
>>> d = {k:v[2:5] for (k,v) in d.items()}
>>> d
{1: 'cde', 2: 'dce', 3: 'cde'}
vddsk6oq

vddsk6oq3#

你不能在没有赋值的情况下改变字典中的字符串值,因为在Python中字符串是不可变的。如果你想获取字符串的前100个字符,你需要创建一个新的字符串。
如果你不想自己写,你可以使用toolz.update_in。输入是字典,列表中的键和回调函数。

my_dict = update_in(my_dict, ['key'], lambda val: val[0:100])

请注意,您必须将返回值重新分配给my_dict,因为update_in不会修改您的输入字典。

相关问题