kun123321 发表于 2025-3-1 10:19:24

很难用简短的话来描述清楚

本帖最后由 kun123321 于 2025-3-1 10:32 编辑

'
near_dic = {}
near_abs_dic = {}
for key_code6 in increase6:
    val6 = increase6
    whole_dic = {}
    whole_abs_dic = {}
    for key in swift:
      val = swift
      a = 0
      a15, a30, a60, a120 = False, False, False, False
      for key_date, val_ohlcv in val.items():
            try:
                o = val_ohlcv - val6
                h = val_ohlcv - val6
                l = val_ohlcv - val6
                c = val_ohlcv - val6
                v = val_ohlcv - val6
                oo, hh, ll, cc, vv = abs(o), abs(h), abs(l), abs(c), abs(v)
                sum_ohlc = o + h + l + c
                sum_oohhllcc = oo + hh + ll + cc
            except Exception as e:
                break
            whole_dic.setdefault(key, )
            whole_abs_dic.setdefault(key, )

            whole_dic += v
            whole_abs_dic += vv

            if a < 15:
                a15 = True
                for s in range(4):
                  whole_dic += sum_ohlc
                  whole_abs_dic += sum_oohhllcc

            elif 15 <= a <= 30:
                a30 = True
                for s in range(1, 4):
                  whole_dic += sum_ohlc
                  whole_abs_dic += sum_oohhllcc

            elif 30 < a <= 60:
                a60 = True
                for s in range(2, 4):
                  whole_dic += sum_ohlc
                  whole_abs_dic += sum_oohhllcc
            elif a > 60:
                a120 = True
                whole_dic += sum_ohlc
                whole_abs_dic += sum_oohhllcc
            a += 1

      for index, var in enumerate():
            if var is False:
                try:
                  whole_dic = 'None'
                  whole_abs_dic = 'None'
                except Exception as e:
                  print(e)
                  with open(f'E:/n.json', 'w', encoding=de) as f:
                        json.dump(whole_dic, f, ensure_ascii=False)
                        #通过写入json文件发现写入的内容是一个空字典

报错:
whole_dic = 'None'
    ~~~~~~~~~^^^^^
KeyError: 'SH600000'
whole_dic = 'None'中的key就是遍历循环中的for key in swift:程序每次循环都会调用whole_dic.setdefault(key, )
着保证了key一定会存在,那为什么在whole_dic = 'None'中还会报错没有键
声明:key是在for key in swift:语句中产生的,所以key是一定存在的,并且whole_dic = 'None'是在for key in swift:语句的缩进内
所以也可以排除取不到值的情况

FishC 发表于 2025-3-1 10:19:42

可以看到这段代码存在一些问题,并且不完整。让我来帮你调整代码,使其更清晰和完整:

首先,你没有在 `whole_dic` 和 `whole_abs_dic` 中为 `setdefault` 方法提供默认值,也没有为其初始化可以累加的数值类型。另外,变量 `val` 和 `swift` 未被完整赋值。

以下是一个经过调整并注释的示例代码(假设 `increase6` 和 `swift` 被正确初始化为包含日期和OHLCV数据的字典):

near_dic = {}
near_abs_dic = {}

for key_code6 in increase6:
    val6 = increase6

    whole_dic = {}
    whole_abs_dic = {}

    for key in swift:
      val = swift

      a = 0
      a15, a30, a60, a120 = False, False, False, False

      for key_date, val_ohlcv in val.items():
            try:
                o = val_ohlcv['o'] - val6
                h = val_ohlcv['h'] - val6
                l = val_ohlcv['l'] - val6
                c = val_ohlcv['c'] - val6
                v = val_ohlcv['v'] - val6

                oo, hh, ll, cc, vv = abs(o), abs(h), abs(l), abs(c), abs(v)
                sum_ohlc = o + h + l + c
                sum_oohhllcc = oo + hh + ll + cc
            except Exception as e:
                print(f"Error: {e}")
                break
            
            # Initialize default value for each key, should be correct data type
            whole_dic.setdefault(key, 0)
            whole_abs_dic.setdefault(key, 0)
            
            # Accumulate volume and absolute value volume
            whole_dic += v
            whole_abs_dic += vv

            if a < 15:
                a15 = True
                for s in range(4):
                  whole_dic += sum_ohlc
                  whole_abs_dic += sum_oohhllcc

            # Further conditions for a30, a60, a120 can be added

            a += 1

请确保字典 `increase6` 和 `swift` 被完整地初始化,并且它们的结构适合这样的运算。如果你还有其他具体问题,欢迎继续交流!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2025-3-1 15:03:26

本帖最后由 jackz007 于 2025-3-1 15:08 编辑

         配套数据缺失,代码无法运行,无法再现楼主所描述的情形,贴这个代码就没有任何意义,因为,谁都不会在不把握重点的情况下,漫无边际地帮你看代码。
         你现在手上有什么样的数据,想通过这个代码得到什么样的结果,这也很难说清楚?
页: [1]
查看完整版本: 很难用简短的话来描述清楚