我有一个列表如下
tlist=[(‘abc’,HYD,’user1’), (‘xyz’,’SNG’,’user2’), (‘pppp’,’US’,’user3’), (‘qq’,’HK’,’user4’)]
我想显示第一个元组字段的第二个字段元组。
Ex:
tlist(‘xyz’)
SNG
有办法搞定吗?
答案 0 :(得分:3)
元组没有像字典一样的哈希表查找,所以你需要按顺序遍历它,直到找到它为止:
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'
答案 1 :(得分:2)
如果有多个元组以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']