此类型的变量不支持使用花括号进行索引。

我都没有花括号,却报错:此类型的变量不支持使用花括号进行索引。
下午时还能运行的,什么都没动过,晚上报错了

来问问佬佬们

img

那么你改成方括号试试看呢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7739722
  • 除此之外, 这篇博客: 基于多策略的改进花授粉算法中的 二、实验仿真及分析 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    MIFPA算法对FPA算法进行了4个方面的改进:在全局授粉部分增加了两组随机个体的差异矢量;通过一个线性递减概率规则,融合两种变异机制对局部授粉部分进行改进;自适应地调整转换概率;引入余弦函数搜索因子对劣解进行改善。为了验证这些改进策略分别对基本FPA算法的性能提升的效果,分别把这些策略融入到基本FPA算法中,并比较这些不同策略对基本FPA算法的性能改进效果,从而达到证明这些策略的效用。利用不同方法改进的FPA算法如下:

    • IGFPA:在基本FPA算法的全局搜索部分增加了两组随机个体的差异矢量改进后的算法;
    • ILFPA:对基本FPA算法的局部搜索部分改进后的算法;
    • IPFPA:采用自适应调整转换概率的FPA算法;
    • CFPA:融入余弦函数搜索因子的FPA算法;
    • MIFPA:引进上述所有改进策略的FPA算法。

    将MIFPA与FPA和上述4种不同方法改进的FPA算法进行对比,以文献[1]表1中的F1、F2(单模态高维函数/30维)、F6、F8(非旋转的多模态高维函数/30维)、F10、F11(多模态低维函数/4维、4维)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:

    • 函数适应度值的收敛曲线对比及收敛结果
      在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    函数:F1
    FPA:最优值: 1102.6762, 最差值: 2709.4261, 平均值: 1816.8628, 标准差: 398.424
    IGFPA:最优值: 278.6499, 最差值: 865.4833, 平均值: 543.0433, 标准差: 164.4604
    ILFPA:最优值: 335.6107, 最差值: 1468.8504, 平均值: 741.2832, 标准差: 275.4976
    IPFPA:最优值: 225.1061, 最差值: 789.9161, 平均值: 454.1126, 标准差: 145.1454
    CFPA:最优值: 0, 最差值: 0, 平均值: 0, 标准差: 0
    MIFPA:最优值: 0, 最差值: 0, 平均值: 0, 标准差: 0
    函数:F2
    FPA:最优值: 10939.2367, 最差值: 25554.5761, 平均值: 18051.0455, 标准差: 3143.089
    IGFPA:最优值: 5064.7047, 最差值: 16534.6618, 平均值: 11121.1297, 标准差: 2790.6069
    ILFPA:最优值: 492.2353, 最差值: 1783.3709, 平均值: 1107.1141, 标准差: 351.6503
    IPFPA:最优值: 12338.2242, 最差值: 26571.4515, 平均值: 17969.6029, 标准差: 3915.6045
    CFPA:最优值: 0, 最差值: 0, 平均值: 0, 标准差: 0
    MIFPA:最优值: 0, 最差值: 0, 平均值: 0, 标准差: 0
    函数:F6
    FPA:最优值: 13.0261, 最差值: 17.9042, 平均值: 15.9319, 标准差: 1.1135
    IGFPA:最优值: 10.4705, 最差值: 16.9197, 平均值: 13.7115, 标准差: 1.5584
    ILFPA:最优值: 7.0271, 最差值: 10.9861, 平均值: 9.1135, 标准差: 1.2454
    IPFPA:最优值: 9.1531, 最差值: 14.3869, 平均值: 11.3617, 标准差: 1.3076
    CFPA:最优值: 8.8818e-16, 最差值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0
    MIFPA:最优值: 8.8818e-16, 最差值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0
    函数:F8
    FPA:最优值: 19.2057, 最差值: 12779.5492, 平均值: 822.5082, 标准差: 2446.8099
    IGFPA:最优值: 7.5994, 最差值: 27.365, 平均值: 12.36, 标准差: 4.3884
    ILFPA:最优值: 4.0587, 最差值: 32.3221, 平均值: 9.0326, 标准差: 5.5655
    IPFPA:最优值: 6.7877, 最差值: 25.2227, 平均值: 13.0217, 标准差: 3.7959
    CFPA:最优值: 0.005025, 最差值: 0.050079, 平均值: 0.018714, 标准差: 0.010305
    MIFPA:最优值: 0.0030858, 最差值: 0.045018, 平均值: 0.019766, 标准差: 0.010802
    函数:F10
    FPA:最优值: 0.00049111, 最差值: 0.0012362, 平均值: 0.00087339, 标准差: 0.00017134
    IGFPA:最优值: 0.00034314, 最差值: 0.00076413, 平均值: 0.00059345, 标准差: 0.00012123
    ILFPA:最优值: 0.00030749, 最差值: 0.0012232, 平均值: 0.00036854, 标准差: 0.00023232
    IPFPA:最优值: 0.00062474, 最差值: 0.0010752, 平均值: 0.00077192, 标准差: 9.6805e-05
    CFPA:最优值: 0.00030749, 最差值: 0.00060913, 平均值: 0.00033403, 标准差: 7.632e-05
    MIFPA:最优值: 0.00030749, 最差值: 0.00030749, 平均值: 0.00030749, 标准差: 1.2613e-19
    函数:F11
    FPA:最优值: -10.1482, 最差值: -7.879, 平均值: -9.7537, 标准差: 0.50232
    IGFPA:最优值: -10.1532, 最差值: -10.1509, 平均值: -10.1526, 标准差: 0.00049563
    ILFPA:最优值: -10.1532, 最差值: -10.1532, 平均值: -10.1532, 标准差: 3.2574e-10
    IPFPA:最优值: -10.1526, 最差值: -9.1482, 平均值: -10.0558, 标准差: 0.19797
    CFPA:最优值: -10.1532, 最差值: -5.0552, 平均值: -6.4144, 标准差: 2.2925
    MIFPA:最优值: -10.1532, 最差值: -5.0552, 平均值: -6.2447, 标准差: 2.1931
    
    • 独立运行30次的函数最优适应度值比较特性图
      在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    实验结果表明:MIFPA算法是一种富有竞争力的新算法,其解的质量、鲁棒性和收敛速度、时间复杂度等方面总体上都要优于对比算法。

  • 以下回答来自chatgpt:

    情境描述:该代码是在Python环境中被执行的。在修改代码之前,这段代码一直运行良好,但现在突然抛出了“此类型的变量不支持使用花括号进行索引”错误。感到很困惑,因为我没有使用花括号,而且代码并没有被修改过。

    解决方法: 1. 检查代码中是否存在使用花括号进行索引的错误。如果有,应该将花括号替换为正确的索引方式,例如使用方括号。 2. 检查代码中是否存在与该错误相关的其他错误,例如语法错误或变量未定义错误。如果有,应该解决这些错误,并检查是否仍然出现“此类型的变量不支持使用花括号进行索引”错误。 3. 检查变量类型是否正确。如果变量是字符串类型,并且使用了花括号进行索引,并且该变量是无法进行索引的类型,例如tuple或set,则会出现上述错误。在这种情况下,应该将变量转换为正确的类型,例如列表或字典。 4. 如果以上步骤都没有解决问题,检查Python版本是否支持使用花括号进行索引。在某些较旧的Python版本中,可能不支持使用花括号进行索引,并会出现上述错误。在这种情况下,可以将花括号替换为其他支持的索引方式,例如使用方括号。

    示例代码:

    # 检查是否使用了花括号进行索引
    my_dict = {'name': 'Tom', 'age': 18}
    print(my_dict.name)  # 错误的索引方式,应该使用方括号
    print(my_dict['name'])  # 正确的索引方式
    
    # 检查变量类型是否正确
    my_tuple = (1, 2, 3)
    print(my_tuple[0])  # 正确的索引方式
    print(my_tuple{0})  # 错误的索引方式,应该将变量转换为列表或字典
    
    # 检查Python版本是否支持使用花括号进行索引
    my_list = [1, 2, 3]
    print(my_list{0})  # 在较旧的Python版本中会报错,应该使用方括号进行索引
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^