python将dict写入html表的最佳方式

时间:2016-05-31 16:20:24

标签: python html list dictionary

我是一个蟒蛇初学者,我正在努力学习如何以最佳方式做到这一点。 我有一个由几个dicts组成的列表。我有一个功能来搜索一个值,并返回整个字典,如果找到。 #我也不为我的其他人感到骄傲...... 然后它将打印一个表,其中包含一个带有键的列和一个带有值的列。

car1 = {'brand':'skoda','model':'fabia','color':'blue'}
car2 = {'brand':'opel','model':'corsa','color':'red'}
car3 = {'brand':'Audi','model':'a3','color':'black'}
list = [car1,car2,car3]


def getProp(value,carList):
    for elements in carList:
        for i in elements.itervalues():
            if value.lower() == i.lower():
                return elements
            else:
                # empty dict 
                return elements.fromkeys(elements,'')

def printTable(dic):
    html = '<table border=1> < th> CAR </th> <th>PROPERTIES </th>'

    for i in dic.iterkeys():
        html+='<tr> <td> %s </td> <td> %s </td> </tr>' %(i,dic[i])

    html+='</table>'
    print html 

properties = getProp('Opel',list)
print properties
printTable(properties)

1 个答案:

答案 0 :(得分:1)

因为您似乎在寻找代码建议,这是我的:

1)不要跨多个变量定义数据结构,使用单一的复合数据结构;

2)不要自己编写原始HTML,使用众多Python HTML帮助模块中的一个。

结合我上面的建议,我想出了以下返工(警告,Python3而不是像你原来的Python2):

from webhelpers2.html import HTML

cars = {
    'car1': {'brand': 'skoda', 'model': 'fabia', 'color': 'blue'},
    'car2': {'brand': 'opel', 'model': 'corsa', 'color': 'red'},
    'car3': {'brand': 'Audi', 'model': 'a3', 'color': 'black'}
    }

def getProp(carValue, carList):

    for car, dic in carList.items():

        for value in dic.values():

            if carValue.lower() == value.lower():
                return dic

    # else return empty dict
    return {}.fromkeys(carList['car1'], '')

def printTable(dic):

    print(HTML.tag('html',
        HTML.tag('body',
            HTML.tag('table',
                HTML.tag('tr',
                    HTML.tag('th', 'CAR'), HTML.tag('th', 'PROPERTIES')
                    ),
                *[HTML.tag('tr',
                    HTML.tag('td', key), HTML.tag('td', value)
                    ) for key, value in dic.items()]
                )
            )
        )
    )

properties = getProp('Opel', cars)
print(properties)
printTable(properties)

其他人显然会有其他/不同的建议。