鱼C论坛

 找回密码
 立即注册
查看: 606|回复: 9

[已解决]关于变量连续命名的疑问

[复制链接]
发表于 2019-4-17 17:44:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如果有一组数据,假设是 data = [X1,X2,X3,X4,X5,X6],现在要将数据提取出来,分别按顺序命名为d1 ~d6,即d1 =X1, d2 =X2...
想请问下,这种做法有没办法处理?主要就是这个变量名如何进行自动增加序号
最佳答案
2019-4-17 18:31:49
本帖最后由 凌九霄 于 2019-4-17 19:21 编辑
  1. data = ['X1', 'X2', 'X3', 'X4', 'X5', 'X6']

  2. for i in range(6):
  3.     locals()['d' + str(i)] = data[i]
  4.    
  5. print(d0, d1, d2, d3, d4, d5)
复制代码


如果要全局变量则使用globals()
实质是直接在管理局部或全局变量的字典里添加了对应的key及其value,这也是动态语言比较方便的地方。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-17 18:31:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2019-4-17 19:21 编辑
  1. data = ['X1', 'X2', 'X3', 'X4', 'X5', 'X6']

  2. for i in range(6):
  3.     locals()['d' + str(i)] = data[i]
  4.    
  5. print(d0, d1, d2, d3, d4, d5)
复制代码


如果要全局变量则使用globals()
实质是直接在管理局部或全局变量的字典里添加了对应的key及其value,这也是动态语言比较方便的地方。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-17 20:00:40 | 显示全部楼层
凌九霄 发表于 2019-4-17 18:31
如果要全局变量则使用globals()
实质是直接在管理局部或全局变量的字典里添加了对应的key及其value, ...

有点没看明白你的代码。。
如果我这个列表中的数据很多,比如要定义1000个data出来,难道你的print里面要写1000个出来?
我之前是想用字典命令的方式来处理。。但是处理不好。。
怎么说的。。我手头的数据是这样的:
1. 里面有很多家企业,每家企业按照时间顺序,又有各自的数据。。我要对每家企业分组,提取各家企业的数据,各自命令为不同的变量(每个变量其实对应的应该是DataFrame格式),我想用格式化的方式来对变量进行命令,但是格式化是针对字符串而言的,对字典的键名可以适用。。对变量名就没法适用了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-17 20:06:55 | 显示全部楼层
如果是列表
  1. >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
  2. >>> for index, name in enumerate(L):
  3. ...     print index, '-', name
  4. ...
  5. 0 - Adam
  6. 1 - Lisa
  7. 2 - Bart
  8. 3 - Paul
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-17 21:01:19 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-17 21:39 编辑
老笨啊 发表于 2019-4-17 20:00
有点没看明白你的代码。。
如果我这个列表中的数据很多,比如要定义1000个data出来,难道你的print里面 ...


我举个例子而已。print只不过给你显示一下动态定义的变量。变量都在locals()返回的字典里,你难道不知道怎么去迭代访问?实在不知道我也可以给你写出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 08:17:02 | 显示全部楼层
凌九霄 发表于 2019-4-17 21:01
我举个例子而已。print只不过给你显示一下动态定义的变量。变量都在locals()返回的字典里,你难道不知 ...

我知道你是举的例子。
我水平有限,的确也不清楚,该如何正常访问这个d1,d2.。。还请明示~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 08:17:54 | 显示全部楼层

如果要设置变量名和内容的关联,不能直接用index吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 09:40:07 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-18 09:52 编辑
老笨啊 发表于 2019-4-18 08:17
我知道你是举的例子。
我水平有限,的确也不清楚,该如何正常访问这个d1,d2.。。还请明示~~


动态定义了以后,你就像普通变量一样访问就可以了,我print出来不就是直接访问了么?你想要怎么访问?我觉得你没有明白我说的字典的意思,这个字典不是一般的字典,它是Python内部用于管理变量的字典,就像数据库系统,它本身的管理系统也是数据库,用系统的数据库来管理用户的数据库。Python的这个字典是系统自动维护的,它里面的键值是当前所有的变量和变量保存的值。key就是变量名,value就是赋予变量的值,明白?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-18 09:55:53 | 显示全部楼层
凌九霄 发表于 2019-4-18 09:40
动态定义了以后,你就像普通变量一样访问就可以了,我print出来不就是直接访问了么?你想要怎么访问?

不好意思,可能我的意思没表达清楚。
我的意思是:
1. 如果我有很多组数据,就像前面提到的,很多家企业,每家企业都有自己的时间记录数据。数据都汇总在一张表格上; 数据用pandas打开,成了DataFrame格式
2. 我要提取每家企业的数据(因为是有时间记录的数据,所以每家企业的数据量还是挺大的),并赋值给一个变量,方便进行下一步的处理。
3. 比如我有1000家企业,那就是要用for循环去逐个定义变量名,如d1 = xx1公司的数据(该数据格式是DataFrame格式),d2 = xx2公司的数据。。。
4. xx1公司的数据,xx2公司的数据,可以用groupby命令来提取,问题在于这边变量命令,如何做到逐步定义。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-18 10:10:06 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-18 16:51 编辑
老笨啊 发表于 2019-4-18 09:55
不好意思,可能我的意思没表达清楚。
我的意思是:
1. 如果我有很多组数据,就像前面提到的,很多家企 ...


直接QQ吧,这里说着费劲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 04:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表