更改默认字典的所有值,每个键的每个值的商 k/v



给定一个像这样的默认字典数组:

defaultdict(<class 'list'>, {1: [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 2: [2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3], 3: [3, 3, 3, 4, 3, 3, 4, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 3, 4, 4], 4: [4, 4, 5, 5, 6, 4, 5, 5, 6, 4, 5, 5, 5, 5, 4, 4, 5, 4, 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 5, 6, 7, 6, 5, 5, 6], 5: [5, 6, 6, 7, 7, 8, 6, 7, 7, 8, 6, 7, 6, 6, 6, 7, 5, 6, 6, 5, 5, 6, 6, 6, 5, 5, 5, 6, 5, 5, 5, 6, 6, 7, 5, 6, 6, 7, 8, 8, 9, 7, 8, 6, 7, 7], 6: [7, 8, 8, 9, 9, 10, 8, 9, 9, 8, 7, 7, 8, 8, 7, 7, 8, 6, 7, 7, 7, 7, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 9, 10, 7, 8, 9, 9, 10, 10, 9, 8, 8], 7: [9, 10, 10, 11, 11, 10, 10, 11, 9, 10, 8, 9, 9, 9, 10, 8, 9, 9, 8, 8, 8, 8, 9, 7, 8, 8, 8, 9, 7, 8, 8, 9, 9, 10, 11, 11, 12, 10, 11, 11, 11, 10, 9, 9, 10, 11, 12, 13, 14, 15], 8: [11, 12, 12, 12, 13, 11, 12, 12, 11, 10, 10, 11, 11, 10, 10, 9, 9, 9, 10, 10, 9, 9, 10, 10, 11, 9, 10, 10, 11, 12, 12, 13, 14, 13, 12, 12, 12, 13, 14, 15, 16, 17, 18, 11, 12, 13, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 16], 9: [13, 13, 14, 14, 13, 13, 14, 12, 13, 11, 12, 12, 12, 11, 11, 10, 10, 11, 11, 11, 12, 10, 11, 11, 12, 12, 13, 14, 11, 12, 13, 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 14, 15, 16, 17, 18, 19, 20, 21, 13, 14, 15, 16, 17, 18, 19, 20, 13, 14, 15, 16, 17, 18, 19, 19, 18, 17, 17]})

如何获得另一个字典,其中每个值 v 都替换为每个 k 的 k/v?因此,例如,最后一个键 (9( 应该是 {9:[9/13, 9/13,9/14...]},即 {9:{0.692, 0.692, 0.642...}}。

此代码不起作用:

for i in d.keys():
...     for v in d.values():
...             new_dict.update({i:(i/(d[i][v]))})

可能我错过了一些东西,因为如果我尝试这个:

>>> for i in d.keys():
...     print(i/d[i][0])

它工作正常。

谢谢。 吉安·保罗

在这里,我找到了一个解决方案,它可能不是更优雅和pythonic,但至少它可以工作:

from collections import defaultdict
dd = defaultdict(list)
dd.update({1: [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 2: [2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3], 3: [3, 3, 3, 4, 3, 3, 4, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 3, 4, 4], 4: [4, 4, 5, 5, 6, 4, 5, 5, 6, 4, 5, 5, 5, 5, 4, 4, 5, 4, 4, 4, 5, 5, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 5, 6, 7, 6, 5, 5, 6], 5: [5, 6, 6, 7, 7, 8, 6, 7, 7, 8, 6, 7, 6, 6, 6, 7, 5, 6, 6, 5, 5, 6, 6, 6, 5, 5, 5, 6, 5, 5, 5, 6, 6, 7, 5, 6, 6, 7, 8, 8, 9, 7, 8, 6, 7, 7], 6: [7, 8, 8, 9, 9, 10, 8, 9, 9, 8, 7, 7, 8, 8, 7, 7, 8, 6, 7, 7, 7, 7, 6, 6, 7, 7, 6, 6, 7, 7, 8, 8, 9, 10, 7, 8, 9, 9, 10, 10, 9, 8, 8], 7: [9, 10, 10, 11, 11, 10, 10, 11, 9, 10, 8, 9, 9, 9, 10, 8, 9, 9, 8, 8, 8, 8, 9, 7, 8, 8, 8, 9, 7, 8, 8, 9, 9, 10, 11, 11, 12, 10, 11, 11, 11, 10, 9, 9, 10, 11, 12, 13, 14, 15], 8: [11, 12, 12, 12, 13, 11, 12, 12, 11, 10, 10, 11, 11, 10, 10, 9, 9, 9, 10, 10, 9, 9, 10, 10, 11, 9, 10, 10, 11, 12, 12, 13, 14, 13, 12, 12, 12, 13, 14, 15, 16, 17, 18, 11, 12, 13, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 16], 9: [13, 13, 14, 14, 13, 13, 14, 12, 13, 11, 12, 12, 12, 11, 11, 10, 10, 11, 11, 11, 12, 10, 11, 11, 12, 12, 13, 14, 11, 12, 13, 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 14, 15, 16, 17, 18, 19, 20, 21, 13, 14, 15, 16, 17, 18, 19, 20, 13, 14, 15, 16, 17, 18, 19, 19, 18, 17, 17]})
d = list(dd.values())
curva =[[]]
step = 0
for i in range(len(d)):
for k in range(len(d[i])):
if i == 0:
curva[step].append({1:1})
else:
curva[step].append({i+1:i/d[i][k]})
step += 1
curva.append([])
del curva[-1]

结果:

[{1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}, {1: 1}]
[{2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.333}, {2: 0.333}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.5}, {2: 0.333}, {2: 0.5}, {2: 0.5}, {2: 0.333}]
[{3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.5}, {3: 0.666}, {3: 0.666}, {3: 0.5}, {3: 0.666}, {3: 0.666}, {3: 0.5}, {3: 0.5}, {3: 0.5}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.5}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.666}, {3: 0.5}, {3: 0.5}, {3: 0.4}, {3: 0.666}, {3: 0.5}, {3: 0.5}]
[{4: 0.75}, {4: 0.75}, {4: 0.6}, {4: 0.6}, {4: 0.5}, {4: 0.75}, {4: 0.6}, {4: 0.6}, {4: 0.5}, {4: 0.75}, {4: 0.6}, {4: 0.6}, {4: 0.6}, {4: 0.6}, {4: 0.75}, {4: 0.75}, {4: 0.6}, {4: 0.75}, {4: 0.75}, {4: 0.75}, {4: 0.6}, {4: 0.6}, {4: 0.75}, {4: 0.75}, {4: 0.75}, {4: 0.75}, {4: 0.75}, {4: 0.75}, {4: 0.75}, {4: 0.6}, {4: 0.75}, {4: 0.75}, {4: 0.6}, {4: 0.6}, {4: 0.5}, {4: 0.428}, {4: 0.5}, {4: 0.6}, {4: 0.6}, {4: 0.5}]
[{5: 0.8}, {5: 0.666}, {5: 0.666}, {5: 0.571}, {5: 0.571}, {5: 0.5}, {5: 0.666}, {5: 0.571}, {5: 0.571}, {5: 0.5}, {5: 0.666}, {5: 0.571}, {5: 0.666}, {5: 0.666}, {5: 0.666}, {5: 0.571}, {5: 0.8}, {5: 0.666}, {5: 0.666}, {5: 0.8}, {5: 0.8}, {5: 0.666}, {5: 0.666}, {5: 0.666}, {5: 0.8}, {5: 0.8}, {5: 0.8}, {5: 0.666}, {5: 0.8}, {5: 0.8}, {5: 0.8}, {5: 0.666}, {5: 0.666}, {5: 0.571}, {5: 0.8}, {5: 0.666}, {5: 0.666}, {5: 0.571}, {5: 0.5}, {5: 0.5}, {5: 0.444}, {5: 0.571}, {5: 0.5}, {5: 0.666}, {5: 0.571}, {5: 0.571}]
[{6: 0.714}, {6: 0.625}, {6: 0.625}, {6: 0.555}, {6: 0.555}, {6: 0.5}, {6: 0.625}, {6: 0.555}, {6: 0.555}, {6: 0.625}, {6: 0.714}, {6: 0.714}, {6: 0.625}, {6: 0.625}, {6: 0.714}, {6: 0.714}, {6: 0.625}, {6: 0.833}, {6: 0.714}, {6: 0.714}, {6: 0.714}, {6: 0.714}, {6: 0.833}, {6: 0.833}, {6: 0.714}, {6: 0.714}, {6: 0.833}, {6: 0.833}, {6: 0.714}, {6: 0.714}, {6: 0.625}, {6: 0.625}, {6: 0.555}, {6: 0.5}, {6: 0.714}, {6: 0.625}, {6: 0.555}, {6: 0.555}, {6: 0.5}, {6: 0.5}, {6: 0.555}, {6: 0.625}, {6: 0.625}]
[{7: 0.666}, {7: 0.6}, {7: 0.6}, {7: 0.545}, {7: 0.545}, {7: 0.6}, {7: 0.6}, {7: 0.545}, {7: 0.666}, {7: 0.6}, {7: 0.75}, {7: 0.666}, {7: 0.666}, {7: 0.666}, {7: 0.6}, {7: 0.75}, {7: 0.666}, {7: 0.666}, {7: 0.75}, {7: 0.75}, {7: 0.75}, {7: 0.75}, {7: 0.666}, {7: 0.857}, {7: 0.75}, {7: 0.75}, {7: 0.75}, {7: 0.666}, {7: 0.857}, {7: 0.75}, {7: 0.75}, {7: 0.666}, {7: 0.666}, {7: 0.6}, {7: 0.545}, {7: 0.545}, {7: 0.5}, {7: 0.6}, {7: 0.545}, {7: 0.545}, {7: 0.545}, {7: 0.6}, {7: 0.666}, {7: 0.666}, {7: 0.6}, {7: 0.545}, {7: 0.5}, {7: 0.461}, {7: 0.428}, {7: 0.4}]
[{8: 0.636}, {8: 0.583}, {8: 0.583}, {8: 0.583}, {8: 0.538}, {8: 0.636}, {8: 0.583}, {8: 0.583}, {8: 0.636}, {8: 0.7}, {8: 0.7}, {8: 0.636}, {8: 0.636}, {8: 0.7}, {8: 0.7}, {8: 0.777}, {8: 0.777}, {8: 0.777}, {8: 0.7}, {8: 0.7}, {8: 0.777}, {8: 0.777}, {8: 0.7}, {8: 0.7}, {8: 0.636}, {8: 0.777}, {8: 0.7}, {8: 0.7}, {8: 0.636}, {8: 0.583}, {8: 0.583}, {8: 0.538}, {8: 0.5}, {8: 0.538}, {8: 0.583}, {8: 0.583}, {8: 0.583}, {8: 0.538}, {8: 0.5}, {8: 0.466}, {8: 0.437}, {8: 0.411}, {8: 0.388}, {8: 0.636}, {8: 0.583}, {8: 0.538}, {8: 0.5}, {8: 0.466}, {8: 0.437}, {8: 0.411}, {8: 0.7}, {8: 0.636}, {8: 0.583}, {8: 0.538}, {8: 0.5}, {8: 0.466}, {8: 0.437}, {8: 0.437}]
[{9: 0.615}, {9: 0.615}, {9: 0.571}, {9: 0.571}, {9: 0.615}, {9: 0.615}, {9: 0.571}, {9: 0.666}, {9: 0.615}, {9: 0.727}, {9: 0.666}, {9: 0.666}, {9: 0.666}, {9: 0.727}, {9: 0.727}, {9: 0.8}, {9: 0.8}, {9: 0.727}, {9: 0.727}, {9: 0.727}, {9: 0.666}, {9: 0.8}, {9: 0.727}, {9: 0.727}, {9: 0.666}, {9: 0.666}, {9: 0.615}, {9: 0.571}, {9: 0.727}, {9: 0.666}, {9: 0.615}, {9: 0.615}, {9: 0.571}, {9: 0.533}, {9: 0.533}, {9: 0.5}, {9: 0.470}, {9: 0.444}, {9: 0.421}, {9: 0.4}, {9: 0.380}, {9: 0.363}, {9: 0.571}, {9: 0.533}, {9: 0.5}, {9: 0.470}, {9: 0.444}, {9: 0.421}, {9: 0.4}, {9: 0.380}, {9: 0.615}, {9: 0.571}, {9: 0.533}, {9: 0.5}, {9: 0.470}, {9: 0.444}, {9: 0.421}, {9: 0.4}, {9: 0.615}, {9: 0.571}, {9: 0.533}, {9: 0.5}, {9: 0.470}, {9: 0.444}, {9: 0.421}, {9: 0.421}, {9: 0.444}, {9: 0.470}, {9: 0.470}]

最新更新