所以让我们说我有一本字典:
{'h': 2, 'e': 1, 'l': 4, 'o': 4, ',': 1, ' ': 3, 'w': 2, 'r': 1, 'd': 1, '!': 1, 'n': 1, 'g': 1, '.': 3, '\n': 1}
我希望交换我的键和值,以便频率在前面。什么是最好的方法来做到这一点。我试过这个。
my_dict2 = {y: x for x, y in letter_frequency.items()}
得到了
{2: 'w', 1: '\n', 4: 'o', 3: '.'}
所以它显然不起作用。
这是我在字母频率中阅读的完整代码。如果有办法可以做到这一点而不会淹没可能最好的键和值。
word_list = []
file = open(file_name, 'rU')
for line in file:
for word in line:
word_list.append(word);
letter_frequency = {}
for word in word_list:
for letter in word:
keys = letter_frequency.keys()
if letter in keys:
letter_frequency[letter] += 1
else:
letter_frequency[letter] = 1
print(letter_frequency)
my_dict2 = {y: x for x, y in letter_frequency.items()}
print(my_dict2)
return letter_frequency
答案 0 :(得分:1)
假设您要将所有重写密钥保存到列表
data = {'h': 2, 'e': 1, 'l': 4, 'o': 4, ',': 1, ' ': 3, 'w': 2, 'r': 1, 'd': 1, '!': 1, 'n': 1, 'g': 1, '.': 3, '\n': 1}
d = {}
for k, v in data.iteritems():
d.setdefault(v, []).append(k)
print d
{1: ['\n', ',', '!', 'e', 'd', 'g', 'n', 'r'],
2: ['h', 'w'],
3: ['.', ' '],
4: ['l', 'o']}