【问题标题】:How to convert variable name into string in Python如何在 Python 中将变量名转换为字符串
【发布时间】:2020-07-08 19:53:58
【问题描述】:

我想取一个字典的名字,然后把它变成一个字符串。在这种情况下,我使用变量“Name”来识别结构,但我怎样才能简单地将这个字典的名称转换为字符串并完全消除对 Name 变量的需要?

PbO_57 = {  
            1 : [ 'Pb', (0.231, 0.009, 0.250)  ],   2 : [ 'Pb', (-0.231, -0.009, 0.750) ], 
            3 : [ 'Pb', (-0.231, 0.509, 0.750) ],   4 : [ 'Pb', (0.231, 0.491, 0.250)   ], 
            5 : [ 'O', (0.139, 0.412, 0.250)   ],   6 : [ 'O', (-0.139, -0.412, 0.750)  ],
            7 : [ 'O', (-0.139, 0.912, 0.750)  ],   8 : [ 'O', (0.139, 0.088, 0.250)    ] 
        }    

Name = 'PbO_57'

这是我当前在输出中使用字符串名称的方式:

print('{}\n{} X {} X {} {} supercell\n{}'.format(Line,X,Y,Z,Name,Line))

其中显示以下行:

1 X 1 X 8 PbO_57 supercell

【问题讨论】:

  • 我不太确定你的目标是什么?您将如何使用字符串变量名称?也看看这里:stackoverflow.com/questions/18425225/…
  • 我添加了额外的上下文。我希望我已经把事情弄清楚了。
  • 我注意到 ;-) 可能比你想象的要难。我给了你一个链接,里面有很多内部知识和可能的工作机会。希望对您有所帮助。
  • 好的,谢谢!我会读一遍,也许就保持原样。

标签: python-3.x string dictionary


【解决方案1】:

我开发了一个带有值包装器的包 (https://github.com/pwwang/python-varname),可以很容易地实现这一点:

from varname import Wrapper

PbO_57 = Wrapper({  
            1 : [ 'Pb', (0.231, 0.009, 0.250)  ],  2 : [ 'Pb', (-0.231, -0.009, 0.750) ], 
            3 : [ 'Pb', (-0.231, 0.509, 0.750) ],  4 : [ 'Pb', (0.231, 0.491, 0.250)   ], 
            5 : [ 'O', (0.139, 0.412, 0.250)   ],  6 : [ 'O', (-0.139, -0.412, 0.750)  ],
            7 : [ 'O', (-0.139, 0.912, 0.750)  ],  8 : [ 'O', (0.139, 0.088, 0.250)    ] 
        })    
# You don't need the hard-coded Name anymore
# Name = 'PbO_57'
#
# Now you can access the dict by PbO_57.value, 
# and the name "PbO_57" by PbO_57.name

print('{}\n{} X {} X {} {} supercell\n{}'.format(Line,X,Y,Z,PbO_57.name,Line))
# 1 X 1 X 8 PbO_57 supercell

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2013-10-07
    相关资源
    最近更新 更多