Python - 在Dicts中匹配两个ID并返回所有值

时间:2018-01-25 09:57:52

标签: python jinja2

我从数据库中的两个表中获取信息,并将它们放入两个词典列表中。其中一个包含每个服务器的信息,另一个包含每个驱动器的信息。问题是一个服务器有很多驱动器,我试图将它传递给烧瓶,它返回一个服务器信息表和所有驱动器,而不仅仅是匹配的第一个驱动器。

for row in test:
    testlist.append({'Server ID': row[0], 'ServerName': row[1], 'Primary Role': row[2], 'Secondary Role': row[3],
                     'CPU-Name': row[4], 'Operating System': row[5]})

for row in drives:
    drivelists.append({'Server ID': row[0], 'Drive Mapping': row[1], 'FreeSpace': row[2], 'TotalSpace': row[3],
                       'Percentage Used': row[4]})

return render_template('servers.html', basicserverinfo=testlist)

     {% for info in basicserverinfo %}
<div class="container">
    <div class="panel panel-default">
    <h>{{ info['ServerName'] }}</h>
        <table class="table table-bordered">
            <div class="dl-horizontal">
            <dt>Server Name</dt>
            <dd> {{ info['ServerName'] }}</dd>
            <dt>Primary Role</dt>
            <dd> {{ info['Primary Role'] }}</dd>
            <dt>Secondary Role</dt>
            <dd> {{ info['Secondary Role'] }}</dd>
            <dt>CPU</dt>
            <dd> {{ info['CPU-Name'] }}</dd>
            <dt>Operating System</dt>
            <dd> {{ info['Operating System'] }}</dd>
            </div>
        </table>
        <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25"
                           aria-valuemin="0" aria-valuemax="100">{{ info['Percentage Used'] }}%</div>
    </div>
</div>

所以我假设我需要BasicServerInfo / Testlist来包含所有服务器信息以及与服务器ID匹配的所有驱动器

1 个答案:

答案 0 :(得分:0)

我主要回复你问题的标题,因为这个问题本身很容易混淆。

从标题:我认为你想要的是在一个具有相同id的dicts列表中查找所有dicts,并获得它们的列表?

假设我是对的,这是你的问题,这应该有所帮助:

>>> dictlist
[{'id': 1, 'value': 'foo'}, {'id': 2, 'value': 'foo'}, {'id': 1, 'value': 'bar'}]
>>> filtered_list = [d for d in dictlist if d['id']==1]
>>> filtered_list
[{'id': 1, 'value': 'foo'}, {'id': 1, 'value': 'bar'}]