我有一组类型为(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
的值和元组的第二个元素。
答案 0 :(得分:1)
我建议您使用字典。这样,对新计数的重新分配将更加干净并且易于解释。例如:
>>> 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所描述的,元组是不可变的,因此每次更新计数时,都必须使用更新后的计数创建一个新的元组。然后可以使用它替换旧的元组。
答案 1 :(得分:0)
您可以使用filter方法在条件中查找集合中的所有条目,在这种情况下,第一个为“ up”的条件为true。
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中是不可变的