use*_*458 2 python dictionary python-3.x
我的程序在Python 2.0中工作,但我需要它在3.0或更高版本中工作.问题是新的Python不再具有该.has_key功能.我需要知道如何解决这个问题,以便它可以在新版本中使用.
dictionary = {}
for word in words:
if dictionary.has_key(word):
dictionary[word]+=1
else:
dictionary[word]=1
bonus = {}
for key in sorted(dictionary.iterkeys()):
print("%s: %s" % (key,dictionary[key]))
if len(key)>5: #if word is longer than 5 characters (6 or greater) save to list, where we will get top 10 most common
bonus[key]=dictionary[key]
Run Code Online (Sandbox Code Playgroud)
使用in关键测试:
if word in dictionary:
Run Code Online (Sandbox Code Playgroud)
并替换.iterkeys()为.keys(); 在这种情况下,普通sorted(dictionary)就足够了(在Python 2 或 3中).
您的代码,使用更新的技术更简洁地重写,替换dictionary为collections.Counter()对象:
from collections import Counter
dictionary = Counter(words)
bonus = {}
for key in sorted(dictionary):
print("{}: {}".format(key, dictionary[key]))
if len(key) > 5:
bonus[key] = dictionary[key]
Run Code Online (Sandbox Code Playgroud)
虽然您也可以使用Counter.most_common()频率(从高到低)按顺序列出键.
如果要将代码从Python 2移植到3,则可能需要阅读Python移植指南.
| 归档时间: |
|
| 查看次数: |
1736 次 |
| 最近记录: |