2016-05-31 2 views
0

私はPythonの初心者です。私はこれを最適な方法でやる方法を学ぼうとしています。 私はいくつかの辞書で構成されたリストを持っています。私は値を検索するためにfuctionを持っていて、見つかった場合はdict全体を返します。 #私は他の人たちも誇りに思っていません... これは、キーを持つ列と値を持つ列を含む表を印刷します。htmlテーブルにdictを書くためのPythonの最適な方法

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

私はあなたの質問に1つの改善があります:コードのインデントを修正してください – qvpham

+1

あなたの質問は何ですか?あなたの質問はあなたの質問のタイトルか内容ですか?何が動作していないか、具体的には私たちに修正してもらいたいことは何ですか? – Torxed

+0

'' 'print'''ステートメント/関数をelements.itervalues():' ''ループスイートの '' for iに入れて、何が起きているのかを見てください。 – wwii

答えて

1

あなたは私のものである、ここでのコードの提案を探しているように見えるので:単一の複合データ構造を使用して、複数の変数間でデータ構造を定義しないでください

1)。

2)生のHTMLを自分で書くのではなく、多くのPython HTMLヘルパーモジュールを使用してください。

上記の私の提案を組み合わせることで、私は以下のリワークを思い付く(警告、代わりに元のようにPython2ののpython3):

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コードを書くこの方法について知らなかったあなたの提案をありがとう。検索値が見つからない場合は、何か良いことをするための提案もありますか? getPropのelse文 –

関連する問題