Как получить имя переменной для каждого dict в списке dicts? - PullRequest
0 голосов
/ 11 января 2019

Я могу упустить что-то фундаментальное, но учтите следующее:

graph=nx.read_graphml('path here...')
dDict=dict(nx.degree_centrality(graph)) #create dict
lDict=dict(nx.load_centrality(graph))   

new_lists=[dDict,lDict]
for i in new_lists:
    print().... #how to get variable name i.e. dDict

как мне перебрать список диктовок, чтобы, когда я делаю печать, мне возвращалось имя переменной, равной dict, т.е. я хочу иметь возможность получить обратно 'dDict' и 'lDict'? Я не хочу быстрый взлом, такой как

dDict ['name'] = 'dDict'

Есть идеи ..?

РЕДАКТИРОВАТЬ: причина, по которой я хочу это сделать, заключается в том, чтобы я мог добавить эти меры централизации к кадру данных с новым именем столбца, т. Е.

for idx in range(len(new_lists)):
    for i in range(len(df)):
        rowIndex = df.index[i]
        df.loc[rowIndex, idx] = new_lists[idx][rowIndex] #instead of idx how do i dynamically name the column according to the list item name. 

1 Ответ

0 голосов
/ 11 января 2019

Вы можете перебрать globals() и получить имя переменной объекта, которое соответствует содержимому, которое вы ищете.

Подробнее о https://docs.python.org/3/library/functions.html?highlight=globals#globals

Тем не менее, это довольно громоздкий трюк, вы не должны этого делать! Скорее, измените дизайн своего программного обеспечения, чтобы вам не приходилось искать имена переменных.

def get_var_name_of(x):
    return [k for k,v in globals().items() if v==x][0]


dDict = {1:'asd'}
lDict = {2:'qwe'}
new_list=[dDict,lDict]


for d in new_list:
    print(get_var_name_of(d))


dDict
lDict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...