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
villa2935
V2EX  ›  Python

Python 新手之二

  •  
  •   villa2935 · 272 天前 · 1485 次点击
    这是一个创建于 272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上一个问题是集合、列表不分了,感觉自学一天还是有点嫩。不用声明变量类型就能用这个很久没玩过了,上次玩还是 dos basic 时代。甚至连 basic 声明个数组都有个专门的语句,py 这种什么都不用就能声明还是有点不习惯。

    这自学第二天,又出现了新问题。

    合并两个列表成字典。

    keys = [ 0,0,0,0 ]
    values = [ 0,0,0,0 ]
    

    怎么用比较简单的方法让这两个列表合成一个字典呢,合并规则就是下标对应。keys 里的第一个 key ,就是对应 values 里第一个 value ,keys 里第二个 key ,对应 values 里第二个 value 。

    python 有没有比较独道的方法?

    20 条回复    2023-08-25 09:17:47 +08:00
    Weixiao0725
        1
    Weixiao0725  
       272 天前
    用 zip 就可以实现
    t3zb2xzvjm4yvmn
        2
    t3zb2xzvjm4yvmn  
       272 天前
    dict([(i, j) for i in keys for j in values])
    等同于
    dict(zip(keys, values))
    xqher042
        3
    xqher042  
       272 天前
    在 Python 中,可以使用 zip() 函数和字典推导式将两个列表合并为一个字典。zip() 函数可以将多个可迭代对象的对应元素打包成元组,然后我们可以通过字典推导式将这些元组转化为键值对。

    下面是使用 zip() 函数和字典推导式合并 keys 和 values 列表的示例代码:

    python
    keys = [0, 1, 2, 3]
    values = [10, 20, 30, 40]

    result = {k: v for k, v in zip(keys, values)}
    print(result)
    输出结果为:

    {0: 10, 1: 20, 2: 30, 3: 40}
    在上述代码中,zip(keys, values) 将 keys 和 values 中对应位置的元素打包成元组,并返回一个可迭代对象。然后,字典推导式 {k: v for k, v in zip(keys, values)} 遍历这个可迭代对象,生成一个包含合并结果的字典。
    villa2935
        4
    villa2935  
    OP
       272 天前
    @t3zb2xzvjm4yvmn 深刻!深刻!
    villa2935
        5
    villa2935  
    OP
       272 天前
    @xqher042 厉害了!
    ershierdu
        6
    ershierdu  
       272 天前
    如果想花时间深入学习,建议系统地看教程。否则自己摸索很容易提出一些 XY 问题,实际上是在走弯路
    Yourshell
        7
    Yourshell  
       272 天前
    还没学会用 chatgpt 呢😕
    villa2935
        8
    villa2935  
    OP
       271 天前
    @ershierdu 我看的是网上的教程,w3school 的。可以么?我以前有编程基础。
    villa2935
        9
    villa2935  
    OP
       271 天前
    @Yourshell 还没呢,听说过,没见过。
    poporange
        10
    poporange  
       271 天前
    我还是建议你在 B 站看黑马程序员的零基础教程吧,把学习姿态放低,反而学的快。
    ruanimal
        11
    ruanimal  
       271 天前
    @villa2935 那就直接看官方文档啊
    bugmaker1024
        12
    bugmaker1024  
       271 天前
    @poporange 确实,与其看文档,不如看视频系统的学习
    RichardX2023
        13
    RichardX2023  
       271 天前
    wliansheng
        14
    wliansheng  
       271 天前
    基础语法可以去 B 站看视频 学的更快
    villa2935
        15
    villa2935  
    OP
       271 天前
    @poporange 我都上这来了,就挺低的了。
    villa2935
        16
    villa2935  
    OP
       271 天前
    @poporange 是 bilibili 吗?可以的,哈哈。
    villa2935
        17
    villa2935  
    OP
       271 天前
    @RichardX2023 这个好,我今天就准备看这个。
    villa2935
        18
    villa2935  
    OP
       271 天前
    @ershierdu 有推荐的你认为比较系统的教程吗?
    Kinnice
        19
    Kinnice  
       271 天前
    @villa2935 #15 您这是《不耻下问》
    xi4oyu
        20
    xi4oyu  
       247 天前 via Android
    @t3zb2xzvjm4yvmn 不对吧,这两句不等价啊,第一句会导致字典里所有的 value 都是 values 最后一个元素
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2389 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:08 · PVG 00:08 · LAX 09:08 · JFK 12:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.