这是我在没有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
答案 0 :(得分: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>
答案 1 :(得分:1)
您可以使用collections.Counter
计算列表中的出现次数,然后使用此信息创建html表。
试试这个:
from collections import Counter, defaultdict
hello = ["hello","hi","hello","hello"]
counter= Counter(hello)
bye = defaultdict(int)
print"<table>"
for word in counter.keys():
print "<tr>"
print "<td>" + str(word) + ":" + str(counter[word]) + "</td>"
print "</tr>"
bye[word] = counter[word]
print"</table>"
此代码的输出将是(您可以根据需要更改格式):
>>> <table>
>>> <tr>
>>> <td>hi:1</td>
>>> </tr>
>>> <tr>
>>> <td>hello:3</td>
>>> </tr>
>>> </table>
希望这对你有帮助!
答案 2 :(得分:1)
您无法在print语句的中间分配变量。您也无法在print语句中连接字符串类型和整数类型。
print "<td>"+bye[i]= bye[i] +1+"</td>"
应该是
bye[i] = bye[i] + 1
print "<td>"
print bye[i]
print '</td>'
您的return
声明在最终print
之前发布,因此永远无法打印。
全功能
def test2(string):
bye= defaultdict(int)
print"<table>"
for i in hello:
print "<tr>"
bye[i] = bye[i] + 1
print "<td>"
print bye[i]
print '</td>'
print "</tr>"
print"</table>"
return bye
这将是您的代码的精确,有效的翻译,但我不确定您为什么这样做。 bye
在这里毫无意义,因为你每次只打印1次
答案 3 :(得分:1)
Python collections
模块包含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))