亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將字典轉換為數學表達式

將字典轉換為數學表達式

繁星coding 2023-06-27 13:27:31
{'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}}}需要對字典中的數字進行計算。    Eg: {'YOU': {'HE': {'EST': 8, 'OLM': 6}, 'SLO': {'WLR': 8}}, 'WORK': {'KOE': {'RIW': 8, 'PNG': 4}, 'ROE': {'ERC': 8, 'WQD': 6}}} for this example the output would be[(8+6)x8]+[(8+4)x(8+6)][14x8]+[12x14]112+168280以下是我嘗試過的代碼:a = [tuple([k]+list(v.keys())+list(j.values())) for k,v in data.items() for i,j in v.items()]它給出:[('YOU', 'HE', 'SLO', 8, 6), ('YOU', 'HE', 'SLO', 8), ('ARE', 'KLP', 'POL', 6), ('ARE', 'KLP', 'POL', 4), ('DOING', 'TIS', 8), ('GREAT', 'POL', 6), ('WORK', 'KOE', 'ROE', 8, 4), ('WORK', 'KOE', 'ROE', 8, 6), ('KEEP', 'PAR', 'PIL', 8, 6), ('KEEP', 'PAR', 'PIL', 4, 8), ('ROCKING', 'OUL', 6, 8)]
查看完整描述

2 回答

?
慕田峪7331174

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


查看完整回答
反對 回復 2023-06-27
?
慕萊塢森

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


查看完整回答
反對 回復 2023-06-27
  • 2 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號