gpt4 book ai didi

python - 比较向量的相等性作为字典

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:14 24 4
gpt4 key购买 nike

所以我有一个问题要解决(概述如下)。这个问题使用了一个有两个成员变量的类(Vec)。 v.D 指的是向量域中的元素,而 v.f 指的是映射域元素的字典。

例如,如果 v = Vec({'x','y','z'},{'y':1,'x':2}) 那么 v.D = {'x', 'y' , 'z'} 和 v.f = {'y':1, x:'2'}。如果 v.D 的元素没有出现在 v.f 中,则假定域的元素映射到零(即 'z':0 出现在 v.D 中,但仅假定在 v.f 中)。

问题建议我使用 all() 属性,但我似乎无法使其工作。我在下面提供了两个解决方案(两者都不起作用)。我遇到的主要问题是当 v.D 的元素不与 v.f 中的键一起出现时测试相等性

`

def 等于(u,v):

""" 返回真当且仅当 u 等于 v(其中 u 和 v 是类 vec() 的成员)。 由于稀疏表示(域映射为零),仅比较字典是不够的

>>> Vec({'a', 'b', 'c'}, {'a':0}) == Vec({'a', 'b', 'c'}, {'b':0})
True

Be sure that equal(u, v) check equalities for all keys from u.f and v.f even if
some keys in u.f do not exist in v.f (or vice versa)

>>> Vec({'x','y','z'},{'y':1,'x':2}) == Vec({'x','y','z'},{'y':1,'z':0})
False
>>> Vec({'a','b','c'}, {'a':0,'c':1}) == Vec({'a','b','c'}, {'a':0,'c':1,'b':4})
False
>>> Vec({'a','b','c'}, {'a':0,'c':1,'b':4}) == Vec({'a','b','c'}, {'a':0,'c':1})
False

The keys matter:
>>> Vec({'a','b'},{'a':1}) == Vec({'a','b'},{'b':1})
False

The values matter:
>>> Vec({'a','b'},{'a':1}) == Vec({'a','b'},{'a':2})
False

"""


assert u.D == v.D

for k in v.D:
if k in v.f and k in u.f:
return v.f[k] == u.f[k]

all(v.f[i] == u.f[i] for i in v.D)

'

最佳答案

我会这样做:

def equal(u, v):
if u.D != v.D: return False # domains must be equal
return all(u.f.get(x, 0) == v.f.get(x, 0) for x in u.D)

这个明显的解决方案有什么问题吗?

关于python - 比较向量的相等性作为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com