簡體   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