我有一本這樣的字典:
D1 = {'u1': {'a1': 2, 'a2': 3, 'a3': 1, 'a4': 2, 'a5': 0, 'a6': 0}, 'u2': {'a1': 1, 'a2': 9, 'a3': 0, 'a4': 3, 'a5': 1, 'a6': 2}, 'u3': {'a1': 0, 'a2': 0, 'a3': 0, 'a4': 0, 'a5': 0, 'a6': 9}, 'u4': {'a1': 10, 'a2': 0, 'a3': 0, 'a4': 4, 'a5': 7, 'a6': 1}}
我想獲得a的所有可能組合,以及以這種方式附加的組合的總和。
例如,如果我給出了 4 個 a 的排列,那么
{'u1': {('a1', 'a2', 'a3', 'a6'): 6.0,('a1', 'a2', 'a3', 'a4'): 8.0,('a2', 'a4', 'a5', 'a6'): 5.0,...} 'u2':{ ('a2', 'a4', 'a5', 'a6'): 15.0, ...} and so on}
我會很感激任何解釋或想法!謝謝
這是我現在的代碼,我知道這是一個笨拙的代碼
final_dict = dict()
u_agroup_dict = dict()
for m, t in D1.items():
comb = list(combinations(D1[m], 3))
for i in comb:
sum = 0
for j in i:
sum = t[j]
final_dict[i] = sums
u_agroup_dict[m] = final_dict
print(u_agroup_dict)
uj5u.com熱心網友回復:
我會用itertools.combinations()幾個for回圈來解決這個問題。
import itertools
D1 = {
'u1': {'a1': 2, 'a2': 3, 'a3': 1, 'a4': 2, 'a5': 0, 'a6': 0},
'u2': {'a1': 1, 'a2': 9, 'a3': 0, 'a4': 3, 'a5': 1, 'a6': 2},
'u3': {'a1': 0, 'a2': 0, 'a3': 0, 'a4': 0, 'a5': 0, 'a6': 9},
'u4': {'a1': 10, 'a2': 0, 'a3': 0, 'a4': 4, 'a5': 7, 'a6': 1}
}
results = {}
for key, value in D1.items():
## -----------------
## ensure we have a valid sub-dictionary for this key
## -----------------
this_result = results.setdefault(key, {})
## -----------------
## -----------------
## iterate over the combinations of 4
## -----------------
for sub_key in itertools.combinations(value.keys(), 4):
sub_key_tuple = tuple(sub_key) ## lists can't be indexes but tuples can
total = sum(value[t] for t in sub_key)
this_result.setdefault(sub_key_tuple, total)
## -----------------
print(results)
給予:
{
'u1': {
('a1', 'a2', 'a3', 'a4'): 8,
('a1', 'a2', 'a3', 'a5'): 6,
('a1', 'a2', 'a3', 'a6'): 6,
('a1', 'a2', 'a4', 'a5'): 7,
('a1', 'a2', 'a4', 'a6'): 7,
('a1', 'a2', 'a5', 'a6'): 5,
('a1', 'a3', 'a4', 'a5'): 5,
('a1', 'a3', 'a4', 'a6'): 5,
('a1', 'a3', 'a5', 'a6'): 3,
('a1', 'a4', 'a5', 'a6'): 4,
('a2', 'a3', 'a4', 'a5'): 6,
('a2', 'a3', 'a4', 'a6'): 6,
('a2', 'a3', 'a5', 'a6'): 4,
('a2', 'a4', 'a5', 'a6'): 5,
('a3', 'a4', 'a5', 'a6'): 3},
'u2': {
# ...
},
'u3': {
# ...
},
'u4': {
# ...
}
我希望這是您尋求的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/422559.html
標籤:
