交换python

时间:2018-04-11 16:10:24

标签: python dictionary

所以让我们说我有一本字典:

{'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

1 个答案:

答案 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']}