1

これは、HTMLコードがないときに行ったことです

from collections import defaultdict

hello = ["hello","hi","hello","hello"]
def test(string):
    bye = defaultdict(int)
    for i in hello:
        bye[i]+=1
    return bye

そして、これをhtmlテーブルに変更したいのですが、これは私がこれまでに試したことですが、まだ機能しません

 def test2(string):
    bye= defaultdict(int)
    print"<table>"
    for i in hello:
        print "<tr>"
        print "<td>"+bye[i]= bye[i] +1+"</td>"
        print "</tr>"
    print"</table>"
    return bye

4

4 に答える 4

2
from collections import defaultdict

hello = ["hello","hi","hello","hello"]

def test2(strList):
  d = defaultdict(int)
  for k in strList:
    d[k] += 1
  print('<table>')
  for i in d.items():
    print('<tr><td>{0[0]}</td><td>{0[1]}</td></tr>'.format(i))
  print('</table>')

test2(hello)

出力

<table>
  <tr><td>hi</td><td>1</td></tr>
  <tr><td>hello</td><td>3</td></tr>
</table>
于 2013-05-13T10:26:17.193 に答える
1

Pythoncollectionsモジュールには、必要なことを正確に実行するCounter関数が含まれています。

>>> from collections import Counter
>>> hello = ["hello", "hi", "hello", "hello"]
>>> print Counter(hello)
Counter({'hello': 3, 'hi': 1})

ここで、html を生成します。より良い方法は、これに既存のライブラリを使用することです。たとえば、Jinja2。たとえば、pipを使用してインストールするだけです。

pip install Jinja2

これで、コードは次のようになります。

from jinja2 import Template
from collections import Counter

hello = ["hello", "hi", "hello", "hello"]

template = Template("""
<table>
    {% for item, count in bye.items() %}
         <tr><td>{{item}}</td><td>{{count}}</td></tr>
    {% endfor %}
</table>
""")

print template.render(bye=Counter(hello))
于 2013-05-13T10:20:13.293 に答える