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