提取变量名字符串

本文介绍了如何使用Python的globals()和dir()函数来提取变量名字符串。在学习pandas时,作者遇到需要将变量名作为DataFrame索引的情况,从而引发了对这些函数的探索。globals()返回一个包含所有全局变量的字典,而dir()返回一个变量名字符串列表。文章提供了代码示例,包括集群和单个变量名的提取,并对比了两个函数的差异。
摘要由CSDN通过智能技术生成

Python 官网 https://www.python.org/


  这里,才 python 前沿。可惜是英文原版。所以,我要练习英文阅读。🧐🧐


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

            —— 华罗庚


笔记:提取 python 变量名字符串


  1. globals() 提取
  2. dir() 实现
  3. 完整代码

例子数据

# 例子数据:六名学生每天跳绳练习个数记录(4月9日至4月16,8天)。
# 原始数据
Tom = 453, 307, 618, 742, 267, 346, 299
Rose = 303, 421, 512, 289, 306, 404, 398
Jhon = 367, 431, 519, 279, 336, 374, 366
Anna = 273, 391, 512, 289, 306, 404, 398
Duo = 283, 371, 507, 243, 323, 364, 327
Liuyi = 347, 291, 472, 329, 345, 417, 368

globals() 提取

  学习 pandas 的时候,遇到要把一列表变量名用用 DataFrame 索引设置,就要把列表中的姓名变量名变成字符串。手动操作时,想到要是数据是“成千上万”哩,因而就搜寻一个代码实现的方法。查阅多篇大佬博文,明白了 globals()、dir() 都可以获取当前作用域的所有变量名字符串(前者返回字典,key 是变量名字符串,value 是变量名指向的对象;后者返回列表,列表元素为变量名字符串。),才得以代码实现。

集群提取

代码
# 数据初处理:数据整合成一个列表,姓名字符列表准备好用来重置索引。
names = [Tom, Rose, Jhon, Anna, Duo, Liuyi]
tem = globals() # 全局变量字典获取函数取别名,简化后续语句,方便读写。
# 从全局变量名字典中列表解析 names 中的变量名字符串。
# 直接对字典用一个变量遍历,就是对 key 操作,key 即是 globles() 获取的变量名字符串。
names_str = [i for i in tem if tem[i] in names]
# if 语句意即全局变量字典中 i 字符名称对应的变量在 names 中就解析出该字符串。
print(f'\n\n从全局变量中解析出 names 字符列表:\n\n{names_str}')
输出

在这里插入图片描述


回首页

单个提取

代码
name_str = [i for i in tem if tem[i] is Tom]
# if 语句意即全局变量字典中 i 字符名称对应的变量是 Tom 对应的变量,就解析出该字符串。
print(f"\n\n获取单个变量名字符串:{'Tom = '}{name_str}")
  单个变量名字符串获取,if 条件筛选语句中的条件语句 用 is 或者 == 都是一样可行的。

输出

在这里插入图片描述


回首页

dir() 提取

代码
names_dir = [i for i in dir() if '_' not in i] # 摘除带下划线的变量名字符串。
print(f"\n\n dir() 获取变量名字符串列表:\n\n{names_dir}")
输出

在这里插入图片描述


  注意:

  一、globals() 获取的变量字典,是按变量名在代码中出来的顺序排列的。

  二、dir() 收集的变量名字符串列表是按变量名字符串升序排列的。

  dir() 收集的列表用下标取用,没得 globals() 获取的变量字典使用方便。

回首页

完整 Python 代码


  我的解题思路,已融入代码注释,博文中就不再赘述。

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)

#!/sur/bin/env python
# coding: utf-8

'''

filename: /sdcard/qpython/tem.py

梦幻精灵_cq的炼码场


'''

print('\n'*3) # 打印空行。

# 从自码工具模块加载需用代码块:输出色彩控制、暂停代码运行。
from mypythontools import color, wait

# 例子数据:六名学生每天跳绳练习个数记录(4月9日至4月16,8天)。
# 原始数据
Tom = 453, 307, 618, 742, 267, 346, 299
Rose = 303, 421, 512, 289, 306, 404, 398
Jhon = 367, 431, 519, 279, 336, 374, 366
Anna = 273, 391, 512, 289, 306, 404, 398
Duo = 283, 371, 507, 243, 323, 364, 327
Liuyi = 347, 291, 472, 329, 345, 417, 368

# 数据初处理:数据整合成一个列表,姓名字符列表准备好用来重置索引。
names = [Tom, Rose, Jhon, Anna, Duo, Liuyi]
tem = globals() # 全局变量字典获取函数取别名,简化后续语句,方便读写。
# 从全局变量名字典中列表解析 names 中的变量名字符串。
# 直接对字典用一个变量遍历,就是对 key 操作,key 即是 globles() 获取的变量名字符串。
names_str = [i for i in tem if tem[i] in names]
# if 语句意即全局变量字典中 i 字符名称对应的变量在 names 中就解析出该字符串。
print(f'\n\n从全局变量中解析出 names 字符列表:\n\n{names_str}')


name_str = [i for i in tem if tem[i] is Tom]
# if 语句意即全局变量字典中 i 字符名称对应的变量是 Tom 对应的变量,就解析出该字符串。
print(f"\n\n获取单个变量名字符串:{'Tom = '}{name_str}")


names_dir = [i for i in dir() if '_' not in i] # 摘除带下划线的变量名字符串。
print(f"\n\n dir() 获取变量名字符串列表:\n\n{names_dir}")

wait()

回首页

上一篇:pandas 数据类型之 Series

下一篇:


我的HOT博:
推荐条件 点阅破千

回首页


老齐漫画头像

精品文章:

来源:老齐教室


回首页

Python 入门指南【Python 3.6.3】

好文力荐:

CSDN实用技巧博文:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值