如何使用值列表更新字典中的值

问题描述 投票:1回答:2

使用值列表更新字典中的值

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”}喜欢这个

python python-3.x
2个回答
0
投票

你可以这样做:

Code:

dict(zip(sorted(d.keys(), key=lambda x: -d[x]), lf))

Test Code:

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)))

Results:

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

0
投票

以下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'}
© www.soinside.com 2019 - 2024. All rights reserved.