Python:dict comprehensions:使用旧字典id中的新值创建一个新字典

时间:2015-08-20 04:52:47

标签: python dictionary key

我有一本简单的字典。我正在尝试使用旧字典中的ID和旧字典中值的长度作为新字典的值创建一个新字典。我花了一个小时在堆栈溢出尝试找到我的答案,但没有任何对我有用。我在PEP 274 python页面上尝试了一些关于这个主题的例子https://www.python.org/dev/peps/pep-0274/

这是我正在尝试的(python 2.7):

for k, v in old_dict.iteritems():
    new_dict = { k : len(v) for k in old_dict.keys() for v in old_dict.values()} 

这给了我一个很好的新字典和旧字典的id,但是所有id的值字段都是相同的。例如:

old_dict = {'a':'andkfndknskfn', 'b':'nadfnn', 'c':'fn'}

上面的代码我得到了:

new_dict = {'a':13, 'b':13, 'c':13}

我想要的是:

new_dict = {'a':13, 'b':6, 'c': 2}

我求求你怜悯我:)我真的尝试了很长一段时间才找到答案,但我根本没有成功。提前感谢您帮助我找到我确定的简单答案。

1 个答案:

答案 0 :(得分:2)

您正在混合字典理解和for循环,它们或多或少都是相同的。就这样做:

new_dict = { k: len(v) for k, v in old_dict.iteritems()}