2016-05-31 29 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中的語句 –