Ziv*_*iva 5 python list namedtuple
我有一个命名元组列表:
from collections import namedtuple
T = namedtuple('T', ['attr1', 'attr2', 'attr3', 'attr4'])
t1 = T('T1', 1, '1234', 'XYZ')
t2 = T('T2', 2, '1254', 'ABC')
t3 = T('T2', 2, '1264', 'DEF')
l = [t1, t2, t3]
Run Code Online (Sandbox Code Playgroud)
我想检查元素在列表T中是否存在attr1 = 'T2'。
通过执行以下操作检查列表是否包含此类元素:
any(x for x in l if x.attr1 == 'T2')
Run Code Online (Sandbox Code Playgroud)
仅返回该命名元组是否在列表中的信息。
我也想从列表中弹出这个namedtuple。
一种方法是:
if any(x for x in l if x.attr1 == 'T2'):
result = [x for x in l if x.attr1 == 'T2'].pop()
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢这种解决方案,因为我在列表上循环了l两次。
有没有更好/更优雅的方法?
老式的 for 循环怎么样?简单、优雅,而且只需循环一次。
for x in l:
if x.attr1 == 'T2':
break
result = x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |