删除字典中的嵌套列表
Removing nested list in a dictionary
这是我的输入数据。
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]]}
我怎样才能达到预期的输出?
你可以写一个list comprehension,为字典中的每个键重新构建列表列表,条件是内部项目的差异大于10:
for key, values in data.items():
data[key] = [[low, high] for low, high in values if high - low > 10]
我刚刚做了一个快速测试,看起来可以使用 dict
理解和 filter
buitin 函数来做到这一点:
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]
是更高的元素。
这是我的输入数据。
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]]}
我怎样才能达到预期的输出?
你可以写一个list comprehension,为字典中的每个键重新构建列表列表,条件是内部项目的差异大于10:
for key, values in data.items():
data[key] = [[low, high] for low, high in values if high - low > 10]
我刚刚做了一个快速测试,看起来可以使用 dict
理解和 filter
buitin 函数来做到这一点:
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]
是更高的元素。