Когда я рассматриваю переменную как целое число, она говорит, что это список, когда я рассматриваю ее как список, оно гоPython

Программы на Python
Ответить
Anonymous
 Когда я рассматриваю переменную как целое число, она говорит, что это список, когда я рассматриваю ее как список, оно го

Сообщение Anonymous »

Я хочу создать список (MEM_strings) строк, содержащих имена подразделов моих глобальных переменных, позиция строки в списке должна соответствовать значению переменной (например, MEM_ALARM = 20, поэтому MEM_STRINGS[ 20] = «MEM_ALARM»). Мой стартовый код был:

Код: Выделить всё

MEM_strings = [False] * 71
for var_name, var_value in (list(globals().items())[29:]):
MEM_strings[var_value] = var_name
Что выдает: «Индексы списка должны быть целыми числами или срезами, а не списком», при этом в строке 3 выделяется var_value, используемый в качестве индекса.
Чтобы выяснить проблему, которую я пытался....
  • Я использовал операторы печати для проверки правильности своих значений, если я заменю назначение в цикле на:

Код: Выделить всё

print(f"{var_name}:{var_value}:{type(var_value)}")
Я получаю:

Код: Выделить всё

MEM_FIRMWAREVERSION_MAJOR:0:
MEM_FIRMWAREVERSION_MINOR:1:
MEM_SERVOVERSION_MAJOR:3:
MEM_SERVOVERSION_MINOR:4:
# etc...
var_value выглядит как целое число!

Я пытался преобразовать его в int, прежде чем использовать его в качестве индекса в присваивании, он еще раз жалуется на то, что это список: «аргумент int() должен быть строкой, байтоподобным объектом или действительным числом, а не списком»
[*]Тогда ОК, ЕСЛИ ТЫ СКАЖИТЕ, ЧТО ВЫ СПИСОК, Я БУДУ ОТНОСИТЬСЯ К ВАМ КАК К ОДНОМУ (я не думал, что это сработает, я просто хотел посмотреть, что получится):

Код: Выделить всё

MEM_strings = [False] * 71
for var_name, var_value in (list(globals().items())[29:]):
MEM_strings[var_value[0]] = var_name
В этот момент он жалуется: «Объект 'int' не подлежит индексированию» со ссылкой на [0].
Итак, вкратце var_value говорит это список, когда я пытаюсь обращаться с ним как с целым числом, и говорит, что это целое число, когда я пытаюсь обращаться с ним как со списком. Я подозреваю, что что-то упускаю из точной структуры списка, который я создаю с помощью «list(globals().items())», или неправильно обрабатываю его элементы (я полагаю, что каждый элемент будет кортежем). Я в замешательстве, поскольку вывод оператора печати предполагает, что мой код должен работать так, как задумано.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -it-like-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»