2 回答

TA貢獻1828條經驗 獲得超13個贊
規則沒有明確定義,但無論如何我都會嘗試一下。我假設您只想將此計算應用于鍵YOU和WORK嵌套字典中。我認為列表理解會變得非常復雜,并且使用循環更具可讀性。
對于每個鍵YOU和WORK,我總結了這兩組最里面的值8+6, 8forYOU和8+4, 8+6for WORK,將這些值相乘在一起14*8forYOU和12*14for WORK,然后將乘積加在一起得到結果 =280
dict_nested = {'YOU': {'HE': {'EST': 8, 'OLM': 6}, 'SLO': {'WLR': 8}},
'ARE': {'KLP': {'EST': 6}, 'POL': {'WLR': 4}},
'DOING': {'TIS': {'OIL': 8}},
'GREAT': {'POL': {'EOL': 6}},
'WORK': {'KOE': {'RIW': 8, 'PNG': 4}, 'ROE': {'ERC': 8, 'WQD': 6}},
'KEEP': {'PAR': {'KOM': 8, 'RTW': 6}, 'PIL': {'XCE': 4, 'ACE': 8}},
'ROCKING': {'OUL': {'AZS': 6, 'RVX': 8}}}
keys = ['YOU','WORK']
result = 0
for key in keys:
inner_keys = dict_nested[key].keys()
# multiply the values together for the first values of the inner key
inner_product = 1
for inner_key in inner_keys:
inner_product *= sum(list(dict_nested[key][inner_key].values()))
# print(inner_product)
result += inner_product
輸出:
>>> result
280

TA貢獻1810條經驗 獲得超4個贊
筆記
無論如何不要使用eval,它是不安全的(“eval 是邪惡的”)。
有關危害性的更多詳細信息eval(有太多,我只是挑選了一個)請閱讀此處。
解決方案的一些靈感
正如我之前的其他人和更聰明的人所指出的那樣,我在您提供的示例中沒有找到有關操作數分配的任何合理解釋。
然而,這只是一個小小的嘗試——希望它能幫助你應對挑戰。
所以你開始吧:
import json
d = {'YOU': {'HE': {'EST': 8, 'OLM': 6}, 'SLO': {'WLR': 8}}, 'WORK': {'KOE': {'RIW': 8, 'PNG': 4}, 'ROE': {'ERC': 8, 'WQD': 6}}}
# Convet dictionary to a string
r = json.dumps(d)
# Convert string to char list
chars = list(r)
# Legal chars needed for computing
legal_chars = ['{', '}', ','] + [str(d) for d in range(10)]
# Filtering in only legal chars
filtered_chars = [x for x in chars if x in legal_chars]
# Replacing the {} with () and , with +
expression = ''.join(filtered_chars).replace('{', '(').replace('}', ')').replace(',', '+')
# Evaluating expression
result = eval(expression)
# (((8+6)+(12))+((8+4)+(8+6)))=52
print(f'{expression}={result}')
添加回答
舉報