我可以將此代碼縮短為 1-2 行嗎?我已經(jīng)嘗試將它變成列表理解,但我不確定如果 for 循環(huán)之一使用字典鍵它會如何工作。for a in dict.keys(): for q in list: if a in q: dict[a].append(q) 這段代碼可以很好地查找列表中的項目是否是字典的鍵之一,如果是,則將該項目存儲為該字典鍵下的值,但我希望弄清楚是否可以進(jìn)一步簡化它。
2 回答

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗 獲得超11個贊
最初我想提出以下建議:
{k: v for v in mylist for k in mydict if k in v}
但后來我注意到你實際上正在修改你的輸入,這不是正在發(fā)生的事情。這實際上應(yīng)該做同樣的事情(我對輸入做了一兩個假設(shè)):
for key in mydict.keys(): mydict[key].extend((i for i in mylist if key in i))
但一個不請自來的建議。代碼片段確實不需要縮短。相反,它可以用更冗長和更具描述性的變量名稱來引導(dǎo)讀者閱讀并幫助理解正在發(fā)生的事情。
在任何情況下,請不要使用變量名狀dict
或list
那些已經(jīng)使用內(nèi)置型的構(gòu)造,它真的是自討苦吃,以重新分配給不同的對象(在大多數(shù)情況下,甚至如果仔細(xì)考慮和打算,我仍然建議不要這樣做)。

萬千封印
TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊
如果你愿意,你可以把它變成一個列表理解,像這樣:[my_dict[a].append(q) for a in my_dict for q in my_list if a in q]
,但是,正如你在評論中看到的,這是不推薦的,實際上可能更難閱讀和理解。
循環(huán)用于迭代的內(nèi)容并不重要。我花了這么長時間才明白for
get 是按照它們在嵌套循環(huán)結(jié)構(gòu)中的順序編寫的,而不是作為要計算的表達(dá)式反轉(zhuǎn)。
添加回答
舉報
0/150
提交
取消