首页   注册   登录
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
u2gign
V2EX  ›  Python

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

  •  
  •   u2gign · 117 天前 · 2583 次点击
    这是一个创建于 117 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如我想生成很多的变量,a1=1,a2=2,a3=3,a4=4 ...
    第 1 条附言  ·  117 天前
    实际需求是需要生成一个配置文件,这个文件通过传进来的 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
    qwerthhusn
        1
    qwerthhusn   117 天前
    OMG,list 不行?
    airfling
        2
    airfling   117 天前
    矩阵不行吗,数组不行吗,list 不行吗
    Joyboo
        3
    Joyboo   117 天前
    可变变量
    littleylv
        4
    littleylv   117 天前
    ```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 不懂
    ipwx
        5
    ipwx   117 天前 via Android
    意义何在
    arrow8899
        6
    arrow8899   117 天前
    https://en.wikipedia.org/wiki/XY_problem
    直接说你的原始需求
    airdge
        7
    airdge   117 天前
    locals()['a1']=1
    JeffGe
        8
    JeffGe   117 天前 via Android
    可以用 locals() 或者 globals()
    但为什么要这么做?你是什么样的需求不能用 list 吗?
    u2gign
        9
    u2gign   117 天前
    @arrow8899 我要生成一个配置文件 根据传进来的 list 生成很多配置信息
    krixaar
        10
    krixaar   117 天前
    字典不行吗,和一堆变量用起来没啥区别啊
    JeffGe
        11
    JeffGe   117 天前 via Android
    @u2gign 那用 dict 更好吧

    config["a1"] = 1
    fhy1994
        12
    fhy1994   117 天前
    ```
    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}
    wym7223645
        13
    wym7223645   117 天前
    //用 map,key 是变量名,value 是实际的值, key 动态生成
    for (int i = 0; i < list.size; i++) {
    map.put("a"+1,"实际的值");
    }

    大概这样应该可以吧
    fhy1994
        14
    fhy1994   117 天前
    #12 补充
    如需变量名将 name_dict = {} 改为 name_dict = locals()
    Trim21
        15
    Trim21   117 天前 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'
    }]
    cyrbuzz
        16
    cyrbuzz   117 天前
    以前我也有这么个需求,后来发现变量是保存在`locals()`和`globals()`里的,再后来发现用不着这样做。
    `locals()`和`globals()`也是个字典,直接用字典就好了。
    lanshee
        17
    lanshee   117 天前
    要变量名就 dict,不要就是 list
    u2gign
        18
    u2gign   117 天前
    多谢各位
    secondwtq
        19
    secondwtq   117 天前
    楼主以前不会是用 LISP 的吧 ...
    necomancer
        20
    necomancer   117 天前
    locals()
    这个字典里放的是命名的变量。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3326 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
    ♥ Do have faith in what you're doing.