如何删除某些键为 None 的字典

时间:2021-07-22 06:09:07

标签: python dictionary remove

我想删除某个键为 None 的字典。

例如,我有一个字典列表,例如:

my = [{"mydata": ""}, {"mydata": "hello"}]

我所做的是:

for my_list in my:
    if my_list["mydata"] == "":
        my_list.clear()

但这给出了:

[{}, {'mydata': 'hello'}]

我希望删除 {} 空字典,我该如何实现?

我想要的结果格式是:

{"my_data": "hello"}

4 个答案:

答案 0 :(得分:2)

试试这个:

my = [{"mydata":""},{"mydata":"hello"}]
my2=[x for x in my if x['mydata']!='']
print(my2)

答案 1 :(得分:1)

根据您的用例尝试使用 anyall 进行列表推导。 在您给出的示例中,如果 dict 中只有一个键,那么 allany 不会有太大区别。

my = [{"mydata":""},{"mydata":"hello"}]

my_new = [i for i in my if any(i.values())] #[{'mydata': 'hello'}]

答案 2 :(得分:1)

使用列表理解

my = [{"mydata": ""}, {"mydata": "hello"}, {"mydata": "bye"}, {"mydata": ""}]

new_my = [{x: y} for i in my for x,y in i.items() if y != ""]
print(new_my)
[{'mydata': 'hello'}, {'mydata': 'bye'}]

答案 3 :(得分:0)

使用 (50+20+100)/(100+200+240)*100 而不是 remove(),并迭代列表的副本以避免出现问题

clear()