更改字典以将值映射到值的长度

DeA*_*nez 1 python string dictionary for-loop python-3.x

我有以下字典:

dict = {12:'Apples', 13:'Bananas', 14:'Oranges', 15:'Cherries'}
Run Code Online (Sandbox Code Playgroud)

我想重写这本字典,以便 的值dict成为new_dict. 那么 的值new_dict将是每个新值的长度,如下所示:

new_dict = {'Apples':6, 'Bananas':7, 'Oranges':7, 'Cherries':8}
Run Code Online (Sandbox Code Playgroud)

我可以使用交换值

new_dict{}
for key,value in dict.items():
  new_dict[key] = [value]
  print(new_dict[key])
  counts = len(new_dict[key])
Run Code Online (Sandbox Code Playgroud)

但是这里的 len 函数计算存在多少个值,而不是每个值有多少个字符。

CDJ*_*DJB 5

您可以使用字典理解执行以下操作:

d = {12:'Apples', 13:'Bananas', 14:'Oranges', 15:'Cherries'}

d_new = {v: len(v) for v in d.values()}
Run Code Online (Sandbox Code Playgroud)

输出:

>>> d_new
{'Apples': 6, 'Bananas': 7, 'Oranges': 7, 'Cherries': 8}
Run Code Online (Sandbox Code Playgroud)

请注意dict,在覆盖内置dict类时,不应将其用作变量名。

这等效于以下 for 循环:

new_dict = {}
for v in d.values():
    new_dict[v] = len(v)
Run Code Online (Sandbox Code Playgroud)