0
votes

I have a list with nested dictionaries as list elements. There are 12 such dictionaries with 107 key-value pairs each, as the snapshot of the first dictionary below:

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},

I want to construct a loop through which I can extract the values in this way:


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

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

and so on for every key in every dictionary, and then find the average values of every key across dictionaries, ie average value of key 1, key 2 through key 106. I know the zeros may complicate things a bit but they're needed for the task. Please let me know if this is possible and happy to elaborate further if needed. Thanks.

1
This seems like an xy problem. This data structure is very unusual (each dict has 1 item, with the key being an index in the outer list? you can just use the values without dicts as elements of the outer list, the index is implicit), and splitting it into variables like this is also a strange way to code things. Please provide details about what you're really trying to accomplish and where this data is coming from.ggorlen

1 Answers

1
votes

In case the dictionary keys are ascending, you could iterate over the keys first:

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)}")

Out:

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