首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
Coding
V2EX  ›  Python

如何在 for 循环中赋值给不同的变量

  •  
  •   u2gign · 51 天前 · 1671 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如我想生成很多的变量,a1=1,a2=2,a3=3,a4=4 ...
    第 1 条附言  ·  51 天前
    实际需求是需要生成一个配置文件,这个文件通过传进来的 list,生成很多信息
    格式类似如下,应该会有 100 多条这种信息
    xx1 = {
    'id':1,
    'hosts': '1.1.1.1',
    'port': 22222,
    'username': 'root',
    'pwd': 'aaaaaaaaaaaaaa'
    }
    xx2 = {
    'id':2,
    'hosts': '2.2.2.2',
    'username': 'root',
    'pwd': 'sssssssssssss'
    }
    ...
    20 回复  |  直到 2019-10-23 00:41:47 +08:00
        1
    qwerthhusn   51 天前
    OMG,list 不行?
        2
    airfling   51 天前
    矩阵不行吗,数组不行吗,list 不行吗
        3
    Joyboo   51 天前
    可变变量
        4
    littleylv   51 天前
    ```php
    <?php
    for ($i = 1; $i <= 4; $i++) {
    $k = 'a' . $i;
    $$k = $i;
    }
    var_dump($a1);
    var_dump($a2);
    var_dump($a3);
    var_dump($a4);
    ```

    python 不懂
        5
    ipwx   51 天前 via Android
    意义何在
        6
    arrow8899   51 天前
    https://en.wikipedia.org/wiki/XY_problem
    直接说你的原始需求
        7
    airdge   51 天前
    locals()['a1']=1
        8
    JeffGe   51 天前 via Android
    可以用 locals() 或者 globals()
    但为什么要这么做?你是什么样的需求不能用 list 吗?
        9
    u2gign   51 天前
    @arrow8899 我要生成一个配置文件 根据传进来的 list 生成很多配置信息
        10
    krixaar   51 天前
    字典不行吗,和一堆变量用起来没啥区别啊
        11
    JeffGe   51 天前 via Android
    @u2gign 那用 dict 更好吧

    config["a1"] = 1
        12
    fhy1994   51 天前
    ```
    name_dict = {}
    for i in range(1, 5):
    k = 'a' + str(i)
    name_dict['%s' % k] = i

    print(name_dict)
    ```

    输出:

    {'a3': 3, 'a1': 1, 'a2': 2, 'a4': 4}
        13
    wym7223645   51 天前
    //用 map,key 是变量名,value 是实际的值, key 动态生成
    for (int i = 0; i < list.size; i++) {
    map.put("a"+1,"实际的值");
    }

    大概这样应该可以吧
        14
    fhy1994   51 天前
    #12 补充
    如需变量名将 name_dict = {} 改为 name_dict = locals()
        15
    Trim21   51 天前 via Android
    你把 xx1 xx2 什么的也放到一个 list 里面或者一个 dict 里面

    最后生成一个这个


    [{
    'id':1,
    'hosts': '1.1.1.1',
    'port': 22222,
    'username': 'root',
    'pwd': 'aaaaaaaaaaaaaa'
    },
    {
    'id':2,
    'hosts': '2.2.2.2',
    'username': 'root',
    'pwd': 'sssssssssssss'
    }]
        16
    cyrbuzz   51 天前
    以前我也有这么个需求,后来发现变量是保存在`locals()`和`globals()`里的,再后来发现用不着这样做。
    `locals()`和`globals()`也是个字典,直接用字典就好了。
        17
    lanshee   51 天前
    要变量名就 dict,不要就是 list
        18
    u2gign   51 天前
    多谢各位
        19
    secondwtq   51 天前
    楼主以前不会是用 LISP 的吧 ...
        20
    necomancer   51 天前
    locals()
    这个字典里放的是命名的变量。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4243 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 48ms · UTC 02:45 · PVG 10:45 · LAX 18:45 · JFK 21:45
    ♥ Do have faith in what you're doing.