检查dict的python方法拥有它应该拥有的所有键

检查dict的python方法拥有它应该拥有的所有键,python,dictionary,set,Python,Dictionary,Set,我有一些工作代码,但不知道是否有一个更python的方式来编码它 工作代码 mydict = {"a":77, "b":22} wanted_dict_keys = ["a", "b", "c"] # is each item of the wanted_dict_key present as a key in the dict def all_keys_present(wanted_dict_

我有一些工作代码,但不知道是否有一个更python的方式来编码它

工作代码

mydict = {"a":77, "b":22}
wanted_dict_keys = ["a", "b", "c"]

# is each item of the wanted_dict_key present as a key in the dict
def all_keys_present(wanted_dict_keys, mydict):
    existing_keys = []
    keys_missing = []
    for k,v in mydict.items():
        existing_keys.append(k)
    #print(existing_keys)
    for key in wanted_dict_keys:
        if key not in existing_keys:
            keys_missing.append(key)
            #print("this key is not in the dict: ", key)
    return existing_keys, keys_missing

existing_keys, keys_missing = all_keys_present(wanted_dict_keys, mydict)
print('\n')
print("existing_keys : ", existing_keys)
print("keys_missing : ", keys_missing)
mydict.keys()
将为您提供所有密钥。而
set
将执行相等性检查

mydict={a:77,“b:22}
通缉令钥匙=[“a”、“b”、“c”]
如果(set(mydict.keys())==set(通缉dict\u keys)):
打印('全部存在')
其他:
打印('并非全部存在')
mydict.keys()
将为您提供所有密钥。而
set
将执行相等性检查

mydict={a:77,“b:22}
通缉令钥匙=[“a”、“b”、“c”]
如果(set(mydict.keys())==set(通缉dict\u keys)):
打印('全部存在')
其他:
打印('并非全部存在')
使用
全部

mydict={a:77,“b:22}
通缉令钥匙=[“a”、“b”、“c”]
如果全部(k in mydict表示k in wanted_dict_密钥):
打印(“全部存在”)
其他:
raise VALUE错误(“缺少键!”)
或者,如果您想具体说明:

not_present=[k代表k,如果k不在mydict中,则为k
如果不在场:
raise VALUERROR(f“缺少必需的键{不存在}”)
其他:
打印(f“获取密钥:{list(mydict)}”)
使用
全部

mydict={a:77,“b:22}
通缉令钥匙=[“a”、“b”、“c”]
如果全部(k in mydict表示k in wanted_dict_密钥):
打印(“全部存在”)
其他:
raise VALUE错误(“缺少键!”)
或者,如果您想具体说明:

not_present=[k代表k,如果k不在mydict中,则为k
如果不在场:
raise VALUERROR(f“缺少必需的键{不存在}”)
其他:
打印(f“获取密钥:{list(mydict)}”)

您可以按照以下方式使用
设置
算术

mydict = {"a":77, "b":22}
wanted_dict_keys = ["a", "b", "c"]
missing = set(wanted_dict_keys).difference(mydict.keys())
print(missing)
输出:

{'c'}

您可以在if语句中使用这样创建的
缺失
,因为空集被视为
,而所有其他

您可以按照以下方式使用
设置
算术

mydict = {"a":77, "b":22}
wanted_dict_keys = ["a", "b", "c"]
missing = set(wanted_dict_keys).difference(mydict.keys())
print(missing)
输出:

{'c'}

您可以在if语句中使用这样创建的
缺失
,因为空集被视为
和所有其他

✅ 内联解决方案:要同时获取
现有的\u键
缺少的\u键

existing_keys = [k for k in wanted_dict_keys if k in mydict.keys()]
missing_keys  = [k for k in wanted_dict_keys if k not in mydict.keys()]

但是,如果要保持相同的代码结构:

mydict = {"a":77, "b":22}
wanted_dict_keys = ["a", "b", "c"]

def all_keys_present(wanted_dict_keys, mydict):    
    existing_keys = [k for k in wanted_dict_keys if k in mydict.keys()]
    missing_keys  = [k for k in wanted_dict_keys if k not in mydict.keys()]
    return existing_keys, missing_keys

existing_keys, missing_keys = all_keys_present(wanted_dict_keys, mydict)
print('\n')
print("existing_keys : ", existing_keys)
print("missing_keys  : ", missing_keys)

✅ 内联解决方案:要同时获取
现有的\u键
缺少的\u键

existing_keys = [k for k in wanted_dict_keys if k in mydict.keys()]
missing_keys  = [k for k in wanted_dict_keys if k not in mydict.keys()]

但是,如果要保持相同的代码结构:

mydict = {"a":77, "b":22}
wanted_dict_keys = ["a", "b", "c"]

def all_keys_present(wanted_dict_keys, mydict):    
    existing_keys = [k for k in wanted_dict_keys if k in mydict.keys()]
    missing_keys  = [k for k in wanted_dict_keys if k not in mydict.keys()]
    return existing_keys, missing_keys

existing_keys, missing_keys = all_keys_present(wanted_dict_keys, mydict)
print('\n')
print("existing_keys : ", existing_keys)
print("missing_keys  : ", missing_keys)

如果可以有更多的键,则可以在将键列表转换为一个集合后使用issubset()函数

if set(wanted_dict_keys).issubset(mydict):
    print("all keys are present")
else:
    print("some keys are missing")

如果您想避免每次检查时都进行设置转换,则应将您的
想要的\u dict\u密钥
存储为一个集合而不是一个列表。

如果可以有更多密钥,则可以在将密钥列表转换为一个集合后使用issubset()函数

if set(wanted_dict_keys).issubset(mydict):
    print("all keys are present")
else:
    print("some keys are missing")

如果您想避免每次检查时进行设置转换,您应该将您的
想要的dict\u key
存储为一个集合而不是列表。

提示:提示:您不需要
.key()
调用,只需在mydict中使用
If k[not]进行成员资格测试您不需要
.key()
调用,如果k[not]在mydict中
用于成员资格测试