我有一个元组列表:
MyList = [('name1', 'surname1', 'age1'), ('name2', 'surname2', 'age2'), ...]
我想在MyList中检查“if'name2',例如:
if 'name2' in MyList[?][0]:
print "do something"
如果我要写if 'name2' in MyList[0]
我将访问元素('name1','surname1','age1'),而我的意思是访问元素中每个元组的0位元素列表。我想有一个原理可以做到这一点,但我是一个新手,我自己无法在网上找到它,任何人都可以帮我这个吗?
答案 0 :(得分:2)
您可以使用any
函数和生成器函数,如此
if any("name2" in name for name, surname, age in my_list):
# do something
这里迭代时将元组的所有元素解压缩到name, surname, age
。因此,我们只需检查name2
是否在名称中。这和写作一样
if any("name2" in current_item[0] for current_item in my_list):
这样效率很高,因为匹配后立即产生True
,其他项目无需检查。
如果您正在寻找比较两个字符串的方法,那么您应该使用==
运算符,就像这样
if any("name2" == name for name, surname, age in my_list):
# do something
答案 1 :(得分:1)
听起来您可以从使用词典中受益:
my_dict = dict( (x[0],(x[1],x[2])) for x in MyList)
然后,您可以检查是否存在'names2' in my_dict
,还可以直接访问数据my_dict['names2']
答案 2 :(得分:1)