在 Python 中交换键和值



假设我有一本字典,它包含:

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

假设您要将所有重复键保存到列表中

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

最新更新