字典推导式:用旧字典id的新值创建一个新字典



我有一本简单的字典。我试图创建一个新的字典,从旧字典的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的value字段是相同的。例如:

old_dict = {'a':'andkfndknskfn', 'b':'nadfnn', 'c':'fn'}
使用上面的代码,我得到:
new_dict = {'a':13, 'b':13, 'c':13}

我想要的是:

new_dict = {'a':13, 'b':6, 'c': 2}
我恳求你可怜可怜我:)我真的试了很长一段时间来寻找答案,但我就是没有成功。提前感谢你帮我找到了一个我确信很简单的答案。

您混合了字典推导和for循环,它们或多或少做相同的事情。只需这样做:

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

最新更新