【发布时间】:2017-10-10 09:06:06
【问题描述】:
谁能帮我写下以下代码:
[{k: {x: y for x, y in b.items()} for b in arg for k in range(len(arg))}]
arg 在哪里:
arg = [{"key1": "val1", "key2": "val2"}, {"key1": "val3", "key2": "val4"}]
我正在寻找的输出是:
[0: {"key1": "val1", "key2": "val2"}, 1: {"key1": "val3", "key2": "val4"}]
当我运行上面的dict理解时,我得到了
[0: {"key1": "val3", "key2": "val4"}, 1: {"key1": "val3", "key2": "val4"}]
为什么1: 指向的第二个字典也会在0: 位置重复?我怎样才能阻止这种情况的发生,并让嵌套的 dicts 具有它们的独立值。两个嵌套字典中的键相同,但值必须不同。
【问题讨论】:
-
您在
k和b上有一个双循环。相反,您需要一个循环for k,b in enumerate(arg)。 -
您要查找的输出不是有效的 Python 对象...您在
arg中有错字(逗号必须是分号) -
恕我直言,您的逻辑太复杂,无法理解。它不再可读,并且:“可读性很重要。” ——Python之禅
-
@Klaus
{k:b for k,b in enumerate(arg)}会更简单;) -
dict(enumerate(arg))会做你想做的事。
标签: python dictionary dictionary-comprehension