【发布时间】:2016-08-30 12:36:06
【问题描述】:
我找不到这样做的好方法。假设我有两个列表(这些列表包含具有给定属性的对象)。我需要创建一个具有合并属性的新字典/列表。
listA = [
{
"alpha": "some value",
"time": "datetime",
},
...
]
listB = [
{
"beta": "some val",
"gamma": "some val",
"time": "datetime"
},
...
]
结果应该如下(应该根据“时间”属性合并)
result = {
"datetime": {
"alpha": "some value",
"beta": "some val",
"gamma": "some val"
},
...
}
我如何以 python 方式做到这一点?
例如,
listA = [
{
"time": "Jan 1",
"alpha": "one"
},
{
"time": "Jan 3",
"alpha": "three"
}
]
listB = [
{
"beta": "one-one",
"gamma": "one-two",
"time": "Jan 1"
},
{
"beta": "two-one",
"gamma": "two-two",
"time": "Jan 2"
},
]
result = {
"Jan 1": {
"alpha": "one",
"beta": "one-one",
"gamma": "one-two",
},
"Jan 2": {
"beta": "two-one",
"gamma": "two-two",
},
"Jan 3": {
"alpha": "three"
}
}
【问题讨论】:
-
你目前做得如何,该实现的具体问题是什么(如果问题是它不存在,那么首先修复它... )
-
我没有看到太多证据表明您试图自己解决这个问题。
-
我已经尝试并获得了使用 for 循环的解决方案。但我想知道是否有更直观的方法
-
我在我的答案中添加了另一种方法,即使用列表推导。我不确定这是否更直观。在我看来,对于复杂的嵌套循环,普通的“for 循环”更直观,因为生成的代码更具可读性。然而,对于单循环,我发现列表推导通常更清晰。
标签: python list dictionary