我有一组类型(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 中是不可变