字典理解和条件问题

Trouble with dictionary comprehension and conditions

我有一个结构如下的字典: {1: ["string1", 10, "string2", 5.0], 2: ["string3", 200, "string4", 7.5]}

我的目标是创建一个函数,该函数遍历该字典并根据数值是 int 还是 float 覆盖数值。

我想出但不幸不起作用的功能是:

def changer(value):
   if value is int:
       value += 1
   elif value is float:
       value *= 2

def change_dict(dict):
   dict = {key: changer(value) for (key, value) in dict.items()}
   return dict

非常感谢任何帮助!

您的代码中有几处需要更改:

  • 使用isinstance(value, type)测试你的值的类型
  • 你的字典值是列表,你必须迭代并调用 changer 它们的所有值
  • 您应该避免使用 dict 或其他内置函数名称作为变量名称。

这是您的代码的工作版本:

data = {1: ["string1", 10, "string2", 5.0], 2: ["string3", 200, "string4", 7.5]}

def changer(value):
    if isinstance(value, int):
        value += 1
    elif isinstance(value, float):
        value *= 2
    return value

def change_dict(d):
    d = {key: [changer(value) for value in sublist] for key, sublist in d.items()}
    return d

print(change_dict(data))
# {1: ['string1', 11, 'string2', 10.0], 2: ['string3', 201, 'string4', 15.0]}

请注意,使用 value is int 测试值是否为 类型 int 本身,而不是值的类型是否为 int