使用值列表更新字典中的值
letter_frequency=["e", "t", "a", "o", "i", "n", "s", "r", "h", "l", "d", "c", "u", "m", "f", "p", "g", "w", "y", "b", "v", "k", "x", "j", "q","z"]
dictinoary={'s': 28, 'o': 24, 'c': 20, 'w': 20, 'g': 17, 'm': 17, 't': 17, 'k': 14, 'e': 11, 'n': 10, 'f': 8, 'd': 7, 'y': 7, 'i': 6, 'l': 6, 'q': 6, 'j': 5, 'a': 2, 'r': 2, 'u': 2, 'v': 2, 'z': 1, 'b': 0, 'h': 0, 'p': 0, 'x': 0}
但我想输出:{'s':“e”,'o':“t”,'c':“a”,'w':“o”}喜欢这个
你可以这样做:
dict(zip(sorted(d.keys(), key=lambda x: -d[x]), lf))
lf = ["e", "t", "a", "o", "i", "n", "s", "r", "h", "l", "d", "c",
"u", "m", "f", "p", "g", "w", "y", "b", "v", "k", "x", "j", "q", "z"]
d = {
's': 28, 'o': 24, 'c': 20, 'w': 20, 'g': 17, 'm': 17, 't': 17,
'k': 14, 'e': 11, 'n': 10, 'f': 8, 'd': 7, 'y': 7, 'i': 6, 'l': 6,
'q': 6, 'j': 5, 'a': 2, 'r': 2, 'u': 2, 'v': 2, 'z': 1, 'b': 0,
'h': 0, 'p': 0, 'x': 0}
print(dict(zip(sorted(d.keys(), key=lambda x: -d[x]), lf)))
{
's': 'e', 'o': 't', 'c': 'a', 'w': 'o', 'g': 'i', 'm': 'n', 't': 's',
'k': 'r', 'e': 'h', 'n': 'l', 'f': 'd', 'd': 'c', 'y': 'u', 'i': 'm',
'l': 'f', 'q': 'p', 'j': 'g', 'a': 'w', 'r': 'y', 'u': 'b', 'v': 'v',
'z': 'k', 'b': 'x', 'h': 'j', 'p': 'q', 'x': 'z'
}
以下dict构造函数与dict和列表的键的zip
将执行:
dict(zip(dictionary, letter_frequency))
返回:
{'s': 'e', 'o': 't', 'c': 'a', 'w': 'o', 'g': 'i', 'm': 'n', 't': 's', 'k': 'r', 'e': 'h', 'n': 'l', 'f': 'd', 'd': 'c', 'y': 'u', 'i': 'm', 'l': 'f', 'q': 'p', 'j': 'g', 'a': 'w', 'r': 'y', 'u': 'b', 'v': 'v', 'z': 'k', 'b': 'x', 'h': 'j', 'p': 'q', 'x': 'z'}