循环遍历列表中的嵌套字典

Loop over nested dictionary in list

我有一个以嵌套字典作为列表元素的列表。这样的字典共有 12 个,每个字典有 107 个键值对,如下面第一个字典的快照:

big_list = [{0: 0.9065934065934067,
  1: 0.0,
  2: 0.14285714285714288,
  3: 0.03663003663003663,
  4: 0.0,
  5: 0.0,
  6: 0.053113553113553126,
  7: 0.03663003663003663,
  8: 0.0,
  9: 0.0,
  10: 0.0,
  11: 0.0,
  12: 0.01098901098901099,
  13: 0.0,
  14: 0.0,
  15: 0.0,
  16: 0.0,
  17: 0.0,
  18: 0.0,
  19: 0.0,
  20: 0.0,
  21: 0.0,
  22: 0.0,
  23: 0.0,
  24: 0.0,
  25: 0.0,
  26: 0.0,
  27: 0.0,
  28: 0.0,
  29: 0.0,
  30: 0.0,
  31: 0.0,
  32: 0.0,
  33: 0.0,
  34: 0.0,
  35: 0.0,
  36: 0.0,
  37: 0.0,
  38: 0.0,
  39: 0.0,
  40: 0.0,
  41: 0.0,
  42: 0.0,
  43: 0.0,
  44: 0.0,
  45: 0.0,
  46: 0.0,
  47: 0.0,
  48: 0.0,
  49: 0.0,
  50: 0.0,
  51: 0.0,
  52: 0.0,
  53: 0.0,
  54: 0.0,
  55: 0.0,
  56: 0.0,
  57: 0.0,
  58: 0.0,
  59: 0.0,
  60: 0.0,
  61: 0.0,
  62: 0.0,
  63: 0.0,
  64: 0.0,
  65: 0.0,
  66: 0.0,
  67: 0.0,
  68: 0.0,
  69: 0.0,
  70: 0.0,
  71: 0.0,
  72: 0.0,
  73: 0.0,
  74: 0.0,
  75: 0.0,
  76: 0.0,
  77: 0.0,
  78: 0.0,
  79: 0.0,
  80: 0.0,
  81: 0.0,
  82: 0.0,
  83: 0.0,
  84: 0.0,
  85: 0.0,
  86: 0.0,
  87: 0.0,
  88: 0.0,
  89: 0.0,
  90: 0.0,
  91: 0.0,
  92: 0.0,
  93: 0.0,
  94: 0.0,
  95: 0.0,
  96: 0.0,
  97: 0.0,
  98: 0.0,
  99: 0.0,
  100: 0.0,
  101: 0.0,
  102: 0.0,
  103: 0.0,
  104: 0.0,
  105: 0.0,
  106: 0.0},

我想构造一个循环,通过它我可以通过这种方式提取值:


first_dict[key1][value]
second_dict[key1][value]
third_dict[key1][value]
...
twelfth_dict[key1][value]

...
first_dict[key107][value]
...
twelfth_dict[key107][value]

依此类推每个字典中的每个键,然后找到字典中每个键的平均值,即键 1、键 2 到键 106 的平均值。我知道零可能会使事情复杂化一点但是他们需要完成任务。请让我知道这是否可行,如果需要,我们很乐意进一步阐述。谢谢

如果字典键是升序的,您可以先遍历键:

big_list = [{
    0: 0.9065934065934067,
    1: 0.0,
    2: 0.14285714285714288,
    3: 0.03663003663003663,
    4: 0.0,
    5: 0.0
}, {
    0: 0.9065934065934067,
    1: 0.0,
    2: 0.14285714285714288,
    3: 0.03663003663003663,
    4: 0.0,
    5: 0.0,
    6: 1.0
}, {
    0: 0.9065934065934067,
    1: 0.0,
    2: 0.14285714285714288,
    3: 0.03663003663003663,
    4: 0.0,
    5: 0.0,
    6: 1.0,
    7: 2.2
}]

longestDict = max(len(d.keys()) for d in big_list) # determine longest dictionary, in case they are not equal sized.
for key in range(0, longestDict):
    print(f"Key: {key}")
    for dct in big_list:
        print(f"\t{dct.get(key, None)}")

输出:

Key: 0
    0.9065934065934067
    0.9065934065934067
    0.9065934065934067
Key: 1
    0.0
    0.0
    0.0
Key: 2
    0.14285714285714288
    0.14285714285714288
    0.14285714285714288
...