Python:dict理解:使用旧字典ID的新值创建新字典

Python:dict理解:使用旧字典ID的新值创建新字典,python,dictionary,key,Python,Dictionary,Key,我有一本简单的字典。我正在尝试创建一个新的字典,使用旧字典中的ID和旧字典中值的长度作为新字典的值。我花了一个小时在堆栈溢出上,试图找到我的答案,但什么都没用。我在PEP274 python页面上也尝试了一些关于这个主题的例子 以下是我正在尝试的内容(python 2.7): 这给了我一个很好的新字典,其中包含旧字典的ID,但是值字段在所有ID中都是相同的。例如: old_dict = {'a':'andkfndknskfn', 'b':'nadfnn', 'c':'fn'} 通过上面的代码,

我有一本简单的字典。我正在尝试创建一个新的字典,使用旧字典中的ID和旧字典中值的长度作为新字典的值。我花了一个小时在堆栈溢出上,试图找到我的答案,但什么都没用。我在PEP274 python页面上也尝试了一些关于这个主题的例子

以下是我正在尝试的内容(python 2.7):

这给了我一个很好的新字典,其中包含旧字典的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}

我求求你可怜我:)我真的试了好一阵子自己去寻找答案,但我就是没有成功。提前感谢您帮助我找到了一个简单的答案。

您将词典理解和
for
循环混合在一起,两者的作用或多或少相同。只要这样做:

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

谢谢你的回复。当我执行此操作时,会出现以下错误:“ValueError:太多的值无法解包”。值字段相当长-最大值约为4k英寸length@LaurenIntagliata:我只是用你在问题中给出的样本数据进行了尝试,结果成功了。你能用一小部分数据重现错误吗?不,我只是个白痴。我在dictionary调用中更改了代码,但仍将其保留在循环中。谢谢你,这工作做得很好!
new_dict = { k: len(v) for k, v in old_dict.iteritems()}