如果我有一个数据列表用来创建它
dictlist = []
for key, value in mydict.items():
temp = [key,value]
dictlist.append(temp)
dictlist所以结果是:
dictlist [[0, array([4, 5, 6, 8, 9], dtype=int64)], [1, array([], dtype=int64)], [2, array([ 7, 14, 15, 16, 18, 19], dtype=int64)], [3, array([10, 12], dtype=int64)]]指定列表由集群标签和属于该集群的对象组成,例如,集群(0)由对象编号(4,5,6,8,9)组成,集群(1)没有对象,依此类推。
我的问题是,如何删除任何具有空列表的集群,如集群1。
所以结果将是
dictlist [[0, array([4, 5, 6, 8, 9], dtype=int64)], [2, array([ 7, 14, 15, 16, 18, 19], dtype=int64)], [3, array([10, 12], dtype=int64)]]发布于 2020-10-29 21:40:20
以下是一种可能的解决方案,可以用一行代码替换整个代码:
dictlist = [[k, v] for k, v in mydict.items() if v.size > 0]因此,您可以从头开始构建所需的结果,而不必修改中间结果
发布于 2020-10-29 21:30:42
您可以使用list comprehension来过滤数据:
new_dictlist = [d for d in dictlist if len(d[1]) > 0]发布于 2020-10-29 21:31:12
假设dictList是您提到的输入列表。您必须检查数组是否为空。如果为空,则从列表中删除该项目。
dictlist = [[0, [4, 5, 6, 8, 9]], [1, []], [2, [7, 14, 15, 16, 18, 19]]]
for item in dictlist:
arr = item[1]
if(len(arr) == 0):
dictlist.remove(item)
print(dictlist) # prints [[0, [4, 5, 6, 8, 9]], [2, [7, 14, 15, 16, 18, 19]]]https://stackoverflow.com/questions/64592039
复制相似问题