我的程序适用于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]
答案 0 :(得分:5)
使用in
进行密钥测试:
if word in dictionary:
并将.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]
虽然您也可以使用Counter.most_common()
按频率(从高到低)按顺序列出键。
如果要将代码从Python 2移植到3,则可能需要阅读Python porting guide。