删除字典中的嵌套列表



这是我的输入数据。

data = {323: [[639, 646]], 325: [[1491, 1507]], 332: [[639, 647], [823, 833], [1274, 1298]], 334: [[640, 646]], 335: [[822, 834]]}

我要删除值小于等于10的子列表。

我的输出看起来像这样。

output_data = {323: [], 325:[[1491,1507]], 332:[[1274,1298]], 334:[], 335:[[822,834]]}

我怎样才能达到期望的输出?

您可以编写一个列表推导式,为字典中的每个键重新构建列表的列表,条件是内部项的差值大于10:

for key, values in data.items():
data[key] = [[low, high] for low, high in values if high - low > 10]

我刚刚做了一个快速测试,看起来可以使用dict理解和filter构建函数来做到这一点:

result = {k: list(filter(lambda v: v[1] - v[0] > 10, val_list))
for k, val_list in data.items()}
print(result)

输出:

{323: [], 325: [[1491, 1507]], 332: [[1274, 1298]], 334: [], 335: [[822, 834]]}

假设:子列表的排序顺序是首先是最低的元素,然后是更高的元素。如果没有,您需要用abs调用来包装它,为了安全起见,像abs(v[1] - v[0])一样,以防v[0]是更高的元素。

最新更新