擅长:python、mysql、java
<p>key1、key2、key3等的问题是键中的dict没有排序。因此,我可以随意地将dict更改为键值元组列表,以便对键进行排序:</p>
<p>你可以这样做:</p>
<pre><code>d = [ ('Coco', ['verde', 'redondo'] ),
('Plátano', ['amarillo', 'doblado'] ),
('Fresa', ['rojo', 'redondo chiquito'] ) ]
def makeTable (d):
widths = [2 + max ( [len (k) ] + [len (v) for v in vs] ) for k, vs in d]
formats = ['{:^%s}' % width for width in widths]
values = zip (* ( [k] + vs for k, vs in d) )
sep = '\n+' + '-' * (sum (widths) + len (d) - 1) + '+\n'
rows = sep.join ('|{}|'.format ('|'.join (formats [i].format (k) for i, k in enumerate (vs) ) ) for vs in values)
return sep + rows + sep
print (makeTable (d) )
</code></pre>
<p>为了将dict转换成元组列表,只需使用<code>[ (k, v) for k, v in d.items () ]</code>。</p>
<p>把这两件事放在一起会导致:</p>
<pre><code>d = {'Coco': ['verde', 'redondo'],
'Plátano': ['amarillo', 'doblado'],
'Fresa': ['rojo', 'redondo chiquito'] }
print (makeTable ( [ (k, v) for k, v in d.items () ] ) )
</code></pre>