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

时间:2018-08-31 04:18:15

标签: python python-3.x

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

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”}像这样

2 个答案:

答案 0 :(得分:0)

您可以这样做:

代码:

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

答案 1 :(得分: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'}