用循环附加到字典

flo*_*e-y 3 python dictionary for-loop pandas

我想创建一个带有预定列表的字典,但是,我似乎无法弄清楚如何避免覆盖而不是附加,而且我不确定是否可以避免导入任何其他模块。

范围是我有一个包含 1 列字符名称的数据框,其中 ID 号附加到读取 excel 文件的名称中sega_df

          Character
0         Amy (335)
1       Tails (359)
2      Shadow (357)
3      Shadow (357)
4       Blaze (337)
Run Code Online (Sandbox Code Playgroud)

然后我有一个所有字符的列表,characters,没有他们的 ID 号:

['Sonic', 'Knuckles', 'Tails', 'Amy', 'Cream', 'Shadow', 'Rouge', 'Silver', 'Blaze']
Run Code Online (Sandbox Code Playgroud)

我想创建一个字典,这样我就可以sega_df.Character通过用len()中字符的 切片来替换' characters,产生desired_sega_df

         Character
    0          Amy
    1        Tails
    2       Shadow
    3       Shadow
    4        Blaze
Run Code Online (Sandbox Code Playgroud)

我要创建的字典将包含字符名称的键,而不包含它们的 ID 号,以及len()它们名称的值。字典是slice

{'Sonic': 5, 
 'Knuckles': 8, 
 'Tails': 5, 
 'Amy': 3, 
 'Cream': 5, 
 'Shadow': 6, 
 'Rouge': 5, 
 'Silver': 6, 
 'Blaze': 5}
Run Code Online (Sandbox Code Playgroud)

即使我使用.update()它仍然重复覆盖仅Blaze作为键和5值。

>>> for character in characters:
...     slice = {character: len(character)}
...     slice.update({character:len(character)})
...
>>> slice
{'Blaze': 5}
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何修改循环以将所有字符的键值对添加到其中slice而不是不断覆盖它们?

Ven*_*ogu 6

将您的代码更新为:

>>> slice = dict()
>>> for character in characters:
...     slice.update({character:len(character)})
...
Run Code Online (Sandbox Code Playgroud)

  • 为什么大家总是使用`dict.update()`来添加单个键值对?只需使用`slice[character] = len(character)`。 (6认同)
  • 我同意,即使对于单个键值对,我们也可以同时使用 `update` 和 `assign`。而且,`update` 比 `assign` 慢很多,但是 OP 使用了更新。为了让他清楚,我遵循了同样的风格。 (3认同)