2024-05-20 04:38:46 发布
网友
我有一个字典,其中一个键是NaN,我想删除这个键及其对应的值。我试过了:
from math import isnan clean_dict = filter(lambda k: not isnan(k), dict_HMDB_ID)
但是干净的字典不是字典。我想从python输出它,但是我得到''
你可以:
from math import nan dict_HMDB_ID.pop(nan) clean_dict = dict_HMDB_ID
或者相反,如果你想保存
filter不返回字典。它在python2中返回一个list,在python3中返回一个filter对象。在
filter
您可以使用^{}:
d = {'a': 1, 'b': 2} print(d) # {'a': 1, 'b': 2} d.pop('b') print(d) # {'a': 1}
在你的具体案例中
为了完整起见。它可以通过字典理解来完成,但是迭代没有意义,因为键是唯一的
clean_dict = {k: v for k, v in dict_HMDB_ID.items() if not math.isnan(k)}
如果您坚持在这里使用filter(您真的不应该),您需要:
dict_HMDB_ID.items()
(key, value)
import math dict_HMDB_ID = {1: 'a', float('Nan'): 'b'} clean_dict = dict(filter(lambda tup: not math.isnan(tup[0]), dict_HMDB_ID.items())) print(clean_dict) # {1: 'a'}
我应该提到第一种方法(.pop)直接修改dict_HMDB_ID,而另外两种方法则创建一个新字典。如果您希望使用.pop和创建一个新字典(保留dict_HMDB_ID不变),则可以使用dict创建新字典:
.pop
dict_HMDB_ID
dict
d = {'a': 1, 'b': 2} new_d = dict(d) new_d.pop('b') print(d) # {'b': 2, 'a': 1} print(new_d) # {'a': 1}
你可以:
或者相反,如果你想保存
^{pr2}$filter
不返回字典。它在python2中返回一个list,在python3中返回一个filter对象。在您可以使用^{} :
在你的具体案例中
^{pr2}$为了完整起见。它可以通过字典理解来完成,但是迭代没有意义,因为键是唯一的
如果您坚持在这里使用
filter
(您真的不应该),您需要:dict_HMDB_ID.items()
,这样它将保持原始值(key, value)
元组进行操作。在(key, value)
元组的迭代器)转换回字典我应该提到第一种方法(
.pop
)直接修改dict_HMDB_ID
,而另外两种方法则创建一个新字典。如果您希望使用.pop
和创建一个新字典(保留dict_HMDB_ID
不变),则可以使用dict
创建新字典:相关问题 更多 >
编程相关推荐