Как преобразовать имя переменной в строку в Python - PullRequest
1 голос
/ 08 июля 2020

Я хочу взять имя словаря и превратить его в строку. В этом случае я использую переменную «Имя» для идентификации структуры, но как я могу просто преобразовать имя этого словаря в строку и полностью исключить необходимость в переменной «Имя»?

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

1 Ответ

1 голос
/ 10 июля 2020

Я разработал пакет (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...