对比这两个字典,把 Hobby 里边的新增出来的,两层 for 是咋弄的(想学)? 除了两个 for, 还有没有简便方法拼接成个新的列表: 要的结果:
# 结果
ret= [{
'Name': 'Tom',
'Age': '7',
'Hobby': [
{
'key': 'society',
'value': 'citizen'
}]
}]
# 样本:
s1 = [{
'Name': 'Tom',
'Age': '7',
'Hobby': [{
'key': 'life',
'value': 'motion'
}, {
'key': 'jobs',
'value': 'SoftwareDevelopment'
}, {
'key': 'family',
'value': 'grandfather'
}]
}]
s2 = [{
'Name': 'Tom',
'Age': '7',
'Hobby': [{
'key': 'life',
'value': 'motion'
}, {
'key': 'jobs',
'value': 'SoftwareDevelopment'
}, {
'key': 'family',
'value': 'son'
},
{
'key': 'society',
'value': 'citizen'
}]
}]
1
controller 2019-11-01 12:37:10 +08:00 via Android
这是 list,不是 map。依次对比可以用两次 for,而不是两层 for。。。
|
2
imn1 2019-11-01 12:43:47 +08:00
你先要定下规则,因为你的结果中 name/age 是求相同的,hobby 是求不同的
如果仅仅是比较 hobby 的话,[x not in s1[0]['Hobby'] for x in s2[0]['Hobby']] |
3
ClericPy 2019-11-01 12:44:00 +08:00
如果是固定字段, 直接就是 list_new[len(list_old):]
|
4
wysnylc 2019-11-01 12:51:37 +08:00
A,B 两个数据集合
把 B 转成 map 循环 A,每次循环取在 map 中 get,取到为有取不到就木得 多简单啊 |
5
css3 OP @imn1 只要新增的,值不一样的要忽略
@controller 不会 @ClericPy 测试了一下,有效👍👍,好简单啊 @wysnylc 不会 想找个 for 循环的学习学习,有哪位大佬写一下,我拜读一下吗😥 |