检查dict的python方法拥有它应该拥有的所有键
我有一些工作代码,但不知道是否有一个更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_
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中
用于成员资格测试