我正在處理與字典和串列相關的問題。
這是我的輸入資料
{12: [33, 1231, (40, 41), (299, 304), (564, 569), (1139, 1143), (1226, 1228)],
17: [9, 1492, (30, 43), (1369, 1369)],
20: [9, 1492, (30, 45), (295, 310), (561, 573), (927, 929), (1133, 1148), (1222, 1236), (1354, 1356), (1368, 1369)],
26: [34, 1364],
27: [300, 1360, (918, 922)],
36: [34, 1364]}
我的目標是洗掉值串列中僅包含整數資料型別的鍵值對。(在這個輸入資料中,我想洗掉諸如 26: [34, 1364] 和 36: [34, 1364] 之類的資料)。
所以,我的輸出看起來像這樣
{12: [33, 1231, (40, 41), (299, 304), (564, 569), (1139, 1143), (1226, 1228)],
17: [9, 1492, (30, 43), (1369, 1369)],
20: [9, 1492, (30, 45), (295, 310), (561, 573), (927, 929), (1133, 1148), (1222, 1236), (1354, 1356), (1368, 1369)],
27: [300, 1360, (918, 922)]}
解決這個問題最有效的方法是什么。
uj5u.com熱心網友回復:
使用all:
data = {k: v for k, v in data.items() if not all(isinstance(x, int) for x in v)}
你可以更幻想,使用mapdunder 方法:
data = {k: v for k, v in data.items() if not all(map(int.__instancecheck__, v))}
uj5u.com熱心網友回復:
使用字典理解not isinstance(..., int):
{k: v for k, v in dct.items() if any(not isinstance(i, int) for i in v)}
輸出:
{12: [33, 1231, (40, 41), (299, 304), (564, 569), (1139, 1143), (1226, 1228)],
17: [9, 1492, (30, 43), (1369, 1369)],
20: [9, 1492, (30, 45), (295, 310), (561, 573), (927, 929), (1133, 1148), (1222, 1236), (1354, 1356), (1368, 1369)],
27: [300, 1360, (918, 922)]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322295.html
上一篇:檢查串列是否包含用戶輸入的字串
