[英]How to search tuple with three elements inside list
我有一个清单如下
tlist=[(‘abc’,HYD,’user1’), (‘xyz’,’SNG’,’user2’), (‘pppp’,’US’,’user3’), (‘qq’,’HK’,’user4’)]
我想显示提供的第一个元组字段的第二个字段元组。
Ex:
tlist(‘xyz’)
SNG
有办法得到吗?
元组没有像字典那样的哈希表查找,因此您需要按顺序循环遍历它,直到找到它:
def find_in_tuple(tlist, search_term):
for x, y, z in tlist:
if x == search_term:
return y
print(find_in_tuple(tlist, 'xyz')) # prints 'SNG'
如果您打算多次执行此操作,则肯定要转换为字典。 我建议将元组的第一个元素设为键,然后将其他两个设为该键的值。 您可以使用字典理解功能轻松完成此操作。
>>> tlist_dict = { k: (x, y) for k, x, y in tlist } # Python 3: { k: v for k, *v in tlist }
>>> tlist_dict
{'qq': ['HK', 'user4'], 'xyz': ['SNG', 'user2'], 'abc': ['HYD', 'user1'], 'pppp': ['US', 'user3']}
然后可以选择第二个元素,如下所示:
>>> tlist_dict['xyz'][0]
'SNG'
如果将xyz
作为多个元组作为第一项,请使用以下简单方法(带有修改的示例):
tlist = [('abc','HYD','user1'), ('xyz','SNG','user2'), ('pppp','US','user3'), ('xyz','HK','user4')]
second_fields = [f[1] for f in tlist if f[0] == 'xyz']
print(second_fields) # ['SNG', 'HK']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.