如何在 2 元组集合中找到具有特定第一个元素的 2 元组



我有一组类型(str,int)的对。我将找到包含特定字符串的元组,然后将相应的整数递增 1。我知道如何在集合中找到元组,并询问是否myTuple in mySet.但我不知道如何处理这种情况。我将不胜感激任何帮助。

下面是一个示例集:

from sets import Set
up = 2
down = 3
right = 1
left = 2
mySet = Set([("up",up),("down",down),("right",right),("left",left)])

mySet说我想将第一个元素"up" 1 的对中的第二个递增,所以我需要类似的东西

if ("up",ref) in mySet:
    ref += 1 

通过这样做,我想增加原始变量up的值和元组的第二个元素。

我建议使用字典来实现您的目的。这样,新计数的重新分配将更加干净且更易于解释。例如:

>>> my_set = { 'up': 0, 'down': 0, 'left': 0, 'right': 0 }
>>> my_set['up'] += 1
>>> my_set
{'up': 1, 'down': 0, 'left': 0, 'right': 0}

正如 Brian 所描述的,元组是不可变的,因此每次更新计数时都必须创建一个具有更新计数的新元组。然后,这可用于替换旧元组。

您可以使用 filter 方法查找集合中条件的所有条目,在这种情况下,第一个条目为 "up" 为真。

subset = list(filter(lambda x: x[0] == "up", mySet))
for entry in subset:
    mySet.remove(entry)
    newEntry = (entry[0],(entry[1]+1))
    mySet.add(newEntry)
    up +=1 

你不能使用entry+=1因为元组在 Python 中是不可变

最新更新