Python: Как я могу использовать элемент перечисления в качестве строки? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть список dict1.keys (), который я перечисляю, и я хотел бы использовать элемент в качестве строки.

for i,j in enumerate(dict1.keys()): str(j) = somethingElse
>>> SyntaxError: can't assign to function call

https://dbader.org/blog/python-enumerate описывает перечислимые сущности как кортеж из: (index, element). type(j) - это <class 'str'>, который я могу распечатать, но не использовать в качестве переменной.

РЕДАКТИРОВАТЬ:

for i,j in enumerate(dict1.keys()): j = somethingElse

РЕДАКТИРОВАТЬ2: Я думаю, что проблема может быть с pandas , Первая строка работает, а не вторая.

for i,j in enumerate(dict1.keys()): list1.append(j)
for i,k in enumerate(list1): k = pd.DataFrame(dict1[k]['Values'])

EDIT3: Эта вторая строка работает, но только для заканчивается только одним df, с именем «k» вместо ключа. Но вот что я пытаюсь сделать. Каждый dict конвертируется в df с использованием его имени ключа:

for i,j in enumerate(dict1.keys()): j = pd.DataFrame(dict1[j]['Values'])

EDIT4: согласно комментариям ниже, я переключился на a для l oop на клавишах (которые не нужно явно вызывать), но он по-прежнему не будет использовать элемент «i» в качестве переменной. Тем не менее, из вопроса, связанного ниже, элементы могут быть использованы в качестве ключа в диктовке. После сокращения вопроса до «использовать элемент списка в качестве имени для информационного кадра» и поиска по нему, это звучит так. В качестве ответа я также выложу:

dict2={}
for i in dict1: dict2[i] = pd.DataFrame(dict1[i]['Values'])

.. при этом имена сохраняются. На самом деле, это похоже на ответ Шери со списками, но имена сохраняют связь с dfs. Возможно, не существует способа установить значение переменной с использованием чего-либо, кроме простой строки, но для этого я начну другой вопрос .

использовать элементы в списке для имен файлов данных

Ответы [ 4 ]

1 голос
/ 02 апреля 2020

Поскольку вы генерируете свой pandas кадр данных динамически внутри a для l oop, поэтому в конце, когда вы печатаете j, он покажет вам последний сгенерированный кадр данных. Вы должны сохранить свой фрейм данных в списке. Попробуйте использовать это:

listOfFrame = [] 
for j in dict.keys(): 
    j = pd.DataFrame(dict[j]['Values'])
    listOfFrame.append(j)
0 голосов
/ 03 апреля 2020

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

dict2={}
for i in dict1: dict2[i] = pd.DataFrame(dict1[i]['Values'])

.. при этом имена сохраняются. На самом деле, это похоже на ответ Шери со списками, но имена сохраняют связь с dfs. Может не быть способа установить значение переменной, используя что-то отличное от простой строки, но для этого я начну другой вопрос .

использовать элементы в списке для имен кадров данных

0 голосов
/ 02 апреля 2020

На основе комментариев вы не хотите ни enumerate, ни перебирать ключи dict. Вместо этого вы хотите перебрать его значения :

dfs = []
for val in dict1.values():
    dfs.append(pd.DataFrame(val['Values']))

Однако, это обычно записывается без явного l oop в Python, например, с использованием понимание списка :

dfs = [pd.DataFrame(val['Values']) for val in dict1.values()]
0 голосов
/ 02 апреля 2020

На самом деле j будет str (или любым другим типом ключа, который вы используете в dict).

Фактическая проблема с телом l oop, как ошибка состояние сообщения:

str(j) = somethingElse

недопустимо Python. Левая часть - это вызов функции str, поэтому вы не можете присвоить ей значение.

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