列表列表中的字符串

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]

或者更好的办法是从模板中删除计算部分,因为模板是在上下文的表示级别上工作的视图部分,这样所有预先计算的表达式都应该存储在上下文中,并且只在模板中打印.