如果键有多个值,有没有办法在字典中找到一个值?

时间:2021-03-23 07:21:02

标签: python python-3.x

例如:

a = {}


class Person:
    def getName(self):
        return self.name

    def getValue(self):
        return self.value

    def __init__(self, name, value):
        self.name = name
        self.value = value


oject = Animal("foo", 2)
a[oject.getName()] = oject.getValue(), oject, oject.getName()
valuee = 2

我将如何在字典 a 中查找 valuee?我看过其他文章,但大多数都没有帮助,所以我想转向这个网站。我需要在这篇文章中添加任何其他详细信息吗?

3 个答案:

答案 0 :(得分:0)

这似乎是多重赋值的经典案例。在 Python 中(基于 this 文章),当您对单个变量进行多重赋值时,它会变成一个元组。在这种情况下,将多个变量分配给字典键是相同的原理;它变成了一个元组。要访问它的数据,请像使用任何其他元组一样使用它。

a["foo"][0]

要在 valuee 中查找 a 并返回适当的键,您可以遍历 a 中的项目。

for pair in a.items():
    if pair[1][0] == valuee:
        return pair[0]

或者,由于您还将对象及其名称包含在元组中,因此您可以遍历 a.values()

答案 1 :(得分:0)

所以代码有点模棱两可。此外,在您的字典分配中,您分配了一些 Person 对象属性以及整个对象。这似乎效率不高。读者了解您究竟希望使用此代码完成什么可能会很有用,它可能会提供更好的答案。

但是,使用您的代码并假设 oject = Animal("foo", 2) 应为 oject = Person("foo", 2),您可以像这样访问 value

a["foo"][0]a["foo"][1].getValue()

根据您想用这段代码做什么,最好只拥有一个对象字典 a,例如:a[oject.getName()] = oject。通过这种方式,您可以通过 a["foo"].getName() 等访问所有属性和方法。

答案 2 :(得分:0)

如果您不厌其烦地发布工作代码,并且如果您从问题的标题中清楚地知道您要做什么,那么您的问题将更有可能得到有用的答案。你的标题说你想找到一个值,但你的代码正在分配一个值。

class Person:
    def getName(self):
        return self.name

    def getValue(self):
        return self.value

    def __init__(self, name, value):
        self.name = name
        self.value = value

class Animal(Person):    #without this your assignment to oject will fail
    pass

oject = Animal("foo", 2)
a = vars(oject)
print(a)

输出:

{'name': 'foo', 'value': 2}

现在这个答案可能根本不是你的意思。如果没有,请尝试编辑您的问题以解释您是在尝试在字典中查找值还是将它们分配给字典,确保您提供的代码确实有效,并清楚地说明您期望的输出。