【发布时间】:2012-08-10 01:44:24
【问题描述】:
我的字典的简化:
my_dict = {
'DOC': [
[('k', 'v'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4')],
[('k5', 'v5'), ('k', 'v'), ('k1', 'v1'), ('k6', 'v6')]
],
'DIC': [
[('k7', 'v7'), ('k3', 'v3'), ('k8', 'v8')],
[('k5', 'v5'), ('k3', 'v3'), ('k1', 'v1'), ('k2', 'v2')],
[('k4', 'v4'), ('k9', 'v9')]
],
'INFRA': [
[('k5', 'v5'), ('k3', 'v3'), ('k1', 'v1'), ('k2', 'v2')],
[('k', 'v'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4')]
]
}
覆盖我的字典值:
for k, v in my_dict.items():
my_dict[k] = map(lambda x: dict(x), my_dict[k])
返回...
my_dict
{'DIC': [{'k3': 'v3', 'k7': 'v7', 'k8': 'v8'},
{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k5': 'v5'},
{'k4': 'v4', 'k9': 'v9'}],
'DOC': [{'k': 'v', 'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'},
{'k': 'v', 'k1': 'v1', 'k5': 'v5', 'k6': 'v6'}],
'INFRA': [{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k5': 'v5'},
{'k': 'v', 'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}]}
当我按照相同的逻辑运行我的真实代码时,我得到了错误:
ValueError: 字典更新序列元素#0 的长度为 6; 2 是必需的
我尝试创建另一个字典来接收map(),但发生了同样的错误。有人可以帮助我吗?
【问题讨论】:
-
您的代码对我来说运行良好。你能举一个导致
ValueError的例子吗? -
很难在你看不到的代码中找到错误。
:( -
旁白:
{k: map(dict,v) for k,v in my_dict.iteritems()}稍微简单一些(2.7;.items()在 3 中)。lambda是不必要的,即使您提取它,您也没有使用v。 -
将您的
lambda替换为在返回dict(x)之前打印其参数的常规函数,并注意错误前打印的最后一件事。 -
@Jason Orendorff:问题似乎更有可能出现在我们看不到的数据中。
标签: python dictionary overwrite