python3 numpy.setdiff1d-使用dict_键而不是list得到错误结果 将numpy导入为np dict_to_compare=dict(A=1) 假设_键=['A','B'] direct_dict_keys_compare=np.setdiff1d(假定_keys,dict_to_compare.keys()) 打印(直接记录键比较)

python3 numpy.setdiff1d-使用dict_键而不是list得到错误结果 将numpy导入为np dict_to_compare=dict(A=1) 假设_键=['A','B'] direct_dict_keys_compare=np.setdiff1d(假定_keys,dict_to_compare.keys()) 打印(直接记录键比较),python,python-3.x,numpy,dictionary,Python,Python 3.x,Numpy,Dictionary,Python 2支持相同的代码,并输出预期的结果 在Python3中,必须使用list(),否则类型为dict(如您所说) 您好,我尝试了您的代码,它正确地给出了“B”作为两种情况下的差异。或者,您可以使用下面的代码段来查找差异。list(set(假定的_键)-set(dict_to_compare.KEYS())>尝试了您的代码,它正确地给出了“B”作为两种情况下的差异@Deepak请查看屏幕截图。嗨@gies0r,请不要带我去其他地方,可能我用Python 2运行了你的代码片段,它运行得很

Python 2支持相同的代码,并输出预期的结果

在Python3中,必须使用list(),否则类型为dict(如您所说)


您好,我尝试了您的代码,它正确地给出了“B”作为两种情况下的差异。或者,您可以使用下面的代码段来查找差异。list(set(假定的_键)-set(dict_to_compare.KEYS())>尝试了您的代码,它正确地给出了“B”作为两种情况下的差异@Deepak请查看屏幕截图。嗨@gies0r,请不要带我去其他地方,可能我用Python 2运行了你的代码片段,它运行得很好。然而,看起来python3的方式发生了变化。附加工作作为更多细节的答案。感谢@Deepak提供更多信息。奇怪的是,这是不一致的。
import numpy as np

dict_to_compare = dict(A=1)
ASSUMED_KEYS = ['A','B']

direct_dict_keys_compare = np.setdiff1d(ASSUMED_KEYS, dict_to_compare.keys())
print(direct_dict_keys_compare)

<<< ['A' 'B'] <<< NOT CORRECT ( A is actually in dict_to_compare. B is missing in dict_to_compare)

list_dict_keys_compare = np.setdiff1d(ASSUMED_KEYS, list(dict_to_compare.keys()))
print(list_dict_keys_compare)

<<< ['B'] <<< CORRECT ( B is missing in dict_to_compare)

>>> type(dict_to_compare.keys())
<class 'dict_keys'>