我有一个函数guess,它应该返回与观察值集(arg1)匹配的动物值集(arg2)的键。例如,如果观测集={pet,'fluffy'}和动物词典={cat':{pet,'fluffy','cute'},'dog':{pet'},那么函数应该返回cat的键,因为cat拥有观测集拥有的所有值和set元素。注意,cat还有观察不到的额外值/元素。另外请注意,dog有一个集观测值所具有的值-“pet”-但是,dog没有集观测值所具有的所有值,因此,它不会被返回。你知道吗
这是我目前的职责:
def guess(observations, animals):
for key, value in animals.items():
if observations in value:
return key
这是一个测试:
guess({'pet', 'fluffy'}, {'cat': {'pet', 'fluffy', 'cute'}, 'dog': {'pet'}})
到目前为止,当我希望函数返回cat时,它返回None。如何查看我的一组观察值是否与一组动物值的集合和/或子集匹配?我的大脑想让我错误地相信,检查观察集是否在值集中是比较集的最佳方法。我也试着遍历我的观察结果,看看它们是否在一组值中。这种方法在一定程度上有效。但是,当我尝试:
for key, value in animals.items():
for obs in observations:
if obs in value:
return key
它返回狗。我很感激任何帮助。谢谢
这个想法是迭代所有潜在的动物,看看观察到的值是否是它们各自属性的子集。我假设有多种动物能满足观察结果。你知道吗
在我看来,您正在寻找最佳匹配(最匹配的属性),因此我建议:
您想知道的是
animals
中每个项的值是否是observations
的超集。谢天谢地,set
有一个method来精确地测试它,所以您的函数很简单:请注意,
guess()
返回一个集合,因为animals
中可能有多个符合条件的项:也可以使用
>=
和<=
运算符作为issuperset
和issubset
(而不是>
和<
,它们分别是适当的超集和子集的同义词)。你知道吗相关问题 更多 >
编程相关推荐