我有一個串列和一個字典,我需要檢查串列中的元素是否存在于字典中。如果是,我需要將鍵值對復制到新字典中,并從字典中丟棄其余部分。
list0 = [
-0.2385384148158066,
-0.2307061452151448,
-0.2150726345799602,
-0.2138622652947372,
-0.1098235264547504,
-0.1072424768342444,
-0.1037212327115436,
-0.0966926943378552,
-0.09614853460521154,
9.353161396230564e-07
]
dict0 = {
67: 1.440192237446893e-05,
91: -0.1037212327115436,
115: -0.2307061452151448,
172: 0.0002879308975510175,
242: 1.340170610273099e-05,
266: -0.09614853460521154,
290: -0.2138622652947372,
347: 9.353161396230564e-07,
417: 1.462739691486375e-05,
441: -0.1072424768342444,
465: -0.2385384148158066,
513: 0.001208308075300354,
606: -0.1098235264547504,
630: -0.2442794187837403,
677: 0.0007379497093922571,
747: 1.336163063745514e-05,
771: -0.0966926943378552,
794: -0.2150726345799602
}
我嘗試遍歷串列并檢查元素是否在其中dict0.values(),反之亦然,但仍然無法找到訪問鍵和值的任何方法。
uj5u.com熱心網友回復:
您可以使用字典理解:
>>> {k: v for k, v in dict0.items() if v in list0}
{91: -0.1037212327115436, 115: -0.2307061452151448, 266: -0.09614853460521154, 290: -0.2138622652947372, 347: 9.353161396230564e-07, 441: -0.1072424768342444, 465: -0.2385384148158066, 606: -0.1098235264547504, 771: -0.0966926943378552, 794: -0.2150726345799602}
如果您list0的檔案很大,將其轉換為 aset會使上述方法更快:
>>> set0 = set(list0)
>>> {k: v for k, v in dict0.items() if v in set0}
uj5u.com熱心網友回復:
這很簡單:
這個片段可能有幫助:
new_dict={}
for item in list0:
for d in dict0:
if(item==dict0[d]):
new_dict[d]=item
uj5u.com熱心網友回復:
我無法弄清楚為什么你沒有通過迭代得到答案。你還沒有粘貼你的代碼,所以我只在迭代方法中給出答案,以便你可以將它與你的代碼進行比較。代碼將是:
list0 = [
-0.2385384148158066,
-0.2307061452151448,
-0.2150726345799602,
-0.2138622652947372,
-0.1098235264547504,
-0.1072424768342444,
-0.1037212327115436,
-0.0966926943378552,
-0.09614853460521154,
9.353161396230564e-07
]
dict0 = {
67: 1.440192237446893e-05,
91: -0.1037212327115436,
115: -0.2307061452151448,
172: 0.0002879308975510175,
242: 1.340170610273099e-05,
266: -0.09614853460521154,
290: -0.2138622652947372,
347: 9.353161396230564e-07,
417: 1.462739691486375e-05,
441: -0.1072424768342444,
465: -0.2385384148158066,
513: 0.001208308075300354,
606: -0.1098235264547504,
630: -0.2442794187837403,
677: 0.0007379497093922571,
747: 1.336163063745514e-05,
771: -0.0966926943378552,
794: -0.2150726345799602
}
new_dict={}
for i in dict0:
if dict0[i] in list0:
new_dict[i]=dict0[i]
print(new_dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/353099.html
