V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
css3
V2EX  ›  Python

如何两层 for 循环,求出两个字典的不同值?

  •  
  •   css3 · 2019-11-01 12:04:27 +08:00 · 2714 次点击
    这是一个创建于 1857 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对比这两个字典,把 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'
     	}]
     }]
    
    
    
    
    
    5 条回复    2019-11-01 13:53:47 +08:00
    controller
        1
    controller  
       2019-11-01 12:37:10 +08:00 via Android
    这是 list,不是 map。依次对比可以用两次 for,而不是两层 for。。。
    imn1
        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']]
    ClericPy
        3
    ClericPy  
       2019-11-01 12:44:00 +08:00
    如果是固定字段, 直接就是 list_new[len(list_old):]
    wysnylc
        4
    wysnylc  
       2019-11-01 12:51:37 +08:00
    A,B 两个数据集合
    把 B 转成 map
    循环 A,每次循环取在 map 中 get,取到为有取不到就木得
    多简单啊
    css3
        5
    css3  
    OP
       2019-11-01 13:53:47 +08:00
    @imn1 只要新增的,值不一样的要忽略

    @controller 不会

    @ClericPy 测试了一下,有效👍👍,好简单啊

    @wysnylc 不会

    想找个 for 循环的学习学习,有哪位大佬写一下,我拜读一下吗😥
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:09 · PVG 04:09 · LAX 12:09 · JFK 15:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.