2016-05-31 55 views
0

我是一名蟒蛇初学者,我正试图学习如何做到这一点的最佳方式。 我有一个由少数字母组成的列表。我有一个功能来搜索一个值,并返回整个字典,如果发现。 #我不太喜欢我的其他人以及... 然后,它将打印一个表,其中包含一个带有按键的列和一个带有值的列。蟒蛇写入字典到html表的最佳方式

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) 
+0

我对你的问题有一个改进:请更正你的代码的缩进 – qvpham

+1

你的问题到底是什么?你的问题是你问题的标题还是内容?什么不起作用,或者更具体地说,你希望我们解决什么问题? – Torxed

+0

把一些'''print'''语句/函数放在'''for i中的elements.itervalues():''''循环套件中以查看发生了什么。 – wwii

回答

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) 

其他人当然不会有额外的/不同的建议。

+0

好的非常感谢您的建议,我不知道这种写HTML代码的方式。如果没有找到搜索值,您是否也有建议可以做得更好? else getProp中的语句 –