列表列表中的字符串
string in list of list
我有两个列表:
DevInDB = ['Dev1','Dev2','Dev3']
和
DevInMesh = [['Dev1',0,0],['Dev2',1,1]]
我想知道对于任何 DevInDB 字符串,在 DevInMesh 中是否存在相同的字符串。
我写了这段有效的代码(在 python)
for dev in DevInDB:
if any(dev in DevMesh for DevMesh in DevInMesh ):
print(dev)
else:
print('no')
我尝试使用 jinja 将此代码保存在 HTML 文件中,但是 'any' 函数不起作用。我该怎么做?
您需要在将其发送到 jinja
之前对其进行计算。
例如:
DevInDB = ['Dev1','Dev2','Dev3']
DevInMesh = [['Dev1',0,0],['Dev2',1,1]]
DevInMesh = {k for k, *_ in DevInMesh}
DevInDB = [(i, i in DevInMesh) for i in DevInDB]
print(DevInDB)
我是这样做的:
{% for DevDB in DevInDB %}
{% set ns = namespace(foo=false) %}
{% for DevMesh in DevInMesh %}
{% if DevMesh [0] == DevDB %}
{% set ns.foo = True %}
{% endif %}
{% endfor %}
及以后:
{% if ns.foo %}
{% else %}
{% endif %}
您可以用简单的列表理解替换 any
表达式,其中非空列表将为 True:
[1 for DevMesh in DevInMesh if dev in DevMesh]
或者更好的办法是从模板中删除计算部分,因为模板是在上下文的表示级别上工作的视图部分,这样所有预先计算的表达式都应该存储在上下文中,并且只在模板中打印.
我有两个列表:
DevInDB = ['Dev1','Dev2','Dev3']
和
DevInMesh = [['Dev1',0,0],['Dev2',1,1]]
我想知道对于任何 DevInDB 字符串,在 DevInMesh 中是否存在相同的字符串。
我写了这段有效的代码(在 python)
for dev in DevInDB:
if any(dev in DevMesh for DevMesh in DevInMesh ):
print(dev)
else:
print('no')
我尝试使用 jinja 将此代码保存在 HTML 文件中,但是 'any' 函数不起作用。我该怎么做?
您需要在将其发送到 jinja
之前对其进行计算。
例如:
DevInDB = ['Dev1','Dev2','Dev3']
DevInMesh = [['Dev1',0,0],['Dev2',1,1]]
DevInMesh = {k for k, *_ in DevInMesh}
DevInDB = [(i, i in DevInMesh) for i in DevInDB]
print(DevInDB)
我是这样做的:
{% for DevDB in DevInDB %}
{% set ns = namespace(foo=false) %}
{% for DevMesh in DevInMesh %}
{% if DevMesh [0] == DevDB %}
{% set ns.foo = True %}
{% endif %}
{% endfor %}
及以后:
{% if ns.foo %}
{% else %}
{% endif %}
您可以用简单的列表理解替换 any
表达式,其中非空列表将为 True:
[1 for DevMesh in DevInMesh if dev in DevMesh]
或者更好的办法是从模板中删除计算部分,因为模板是在上下文的表示级别上工作的视图部分,这样所有预先计算的表达式都应该存储在上下文中,并且只在模板中打印.