首页 > 解决方案 > 从字典中删除特定值

问题描述

我正在研究与字典和列表相关的问题。

这是我的输入数据

{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)]}

解决这个问题最有效的方法是什么。

标签: pythonlistdictionarylist-comprehension

解决方案


使用all

data = {k: v for k, v in data.items() if not all(isinstance(x, int) for x in v)}

map使用dunder 方法,您可能会更加幻想:

data = {k: v for k, v in data.items() if not all(map(int.__instancecheck__, v))}

推荐阅读