首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除任何列表为空的集群

删除任何列表为空的集群
EN

Stack Overflow用户
提问于 2020-10-29 21:25:15
回答 4查看 51关注 0票数 0

如果我有一个数据列表用来创建它

代码语言:javascript
复制
dictlist = []
    for key, value in mydict.items():
        temp = [key,value]
        dictlist.append(temp)
        dictlist

所以结果是:

代码语言:javascript
复制
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。

所以结果将是

代码语言:javascript
复制
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)]]
EN

回答 4

Stack Overflow用户

发布于 2020-10-29 21:40:20

以下是一种可能的解决方案,可以用一行代码替换整个代码:

代码语言:javascript
复制
dictlist = [[k, v] for k, v in mydict.items() if v.size > 0]

因此,您可以从头开始构建所需的结果,而不必修改中间结果

票数 3
EN

Stack Overflow用户

发布于 2020-10-29 21:30:42

您可以使用list comprehension来过滤数据:

代码语言:javascript
复制
new_dictlist = [d for d in dictlist if len(d[1]) > 0]
票数 1
EN

Stack Overflow用户

发布于 2020-10-29 21:31:12

假设dictList是您提到的输入列表。您必须检查数组是否为空。如果为空,则从列表中删除该项目。

代码语言:javascript
复制
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]]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64592039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档