0

我的字典键需要这种格式的“/ cat/”,但我不断收到多个正斜杠。这是我的代码:

 # Defining the Digraph method #
 def digraphs(s):
      dictionary = {}
      count = 0;
      while count <= len(s):
          string = s[count:count + 2]
          count += 1
          dictionary[string] = s.count(string)
      for entry in dictionary:
          dictionary['/' + entry + '/'] = dictionary[entry]
          del dictionary[entry]
      print(dictionary)
 #--End of the Digraph Method---#

这是我的输出:

我这样做:

digraphs('我的猫在帽子里')

{'///in///': 1, '/// t///': 1, '/// c///': 1, '//s //': 1, '/my/': 1, '/n /': 1, '/e /': 1, '/ h/': 1, '////ha////': 1, '//////': 21, '/is/': 1, '///ca///': 1, '/he/': 1, '//th//': 1, '/t/': 3, '//at//': 2, '/t /': 1, '////y ////': 1, '/// i///': 2}
4

2 回答 2

3

在 Python 中,您通常不应该在修改对象时对其进行迭代。不要修改您的字典,而是创建一个新字典:

new_dict = {}

for entry in dictionary:
    new_dict['/' + entry + '/'] = dictionary[entry]

return new_dict

或更简洁(Python 2.7 及更高版本):

return {'/' + key + '/': val for key, val in dictionary.items()}

更好的方法是首先跳过创建原始字典:

# Defining the Digraph method #
def digraphs(s):
    dictionary = {}

    for count in range(len(s)):
        string = s[count:count + 2]
        dictionary['/' + string + '/'] = s.count(string)

    return dictionary
#--End of the Digraph Method---#
于 2012-08-30T02:54:27.057 回答
2

您在循环时将条目添加到字典中,因此您的新条目也包含在循环中并再次添加额外的斜杠。更好的方法是制作一个包含您想要的新键的新字典:

newDict = dict(('/' + key + '/', val) for key, val in oldDict.iteritems())

正如@Blender 指出的那样,如果您使用的是 Python 3,您还可以使用字典理解:

{'/'+key+'/': val for key, val in oldDict.items()}
于 2012-08-30T02:51:04.767 回答