我是一个蟒蛇初学者,我正在努力学习如何以最佳方式做到这一点。 我有一个由几个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)
答案 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)
其他人显然会有其他/不同的建议。