繁体   English   中英

如何使用列表中的三个元素搜索元组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM