#python
#python
Вопрос:
theListofSalary = [
[" $0 - $9,999 ",": "]
["$10,000 - $19,999 ",": "]
["$20,000 - $29,999 ",": "]
["$30,000 - $39,999 ",": "]
["$40,000 - $49,999 ",": "]
["$50,000 - $59,999 ",": "]
["$60,000 - $69,999 ",": "]
["$70,000 - $79,999 ",": "]
["$80,000 - $89,999 ",": "]
["$90,000 - $99,999 ",": "]
["$100,000 - $149,999 ",": "]
["$150,000 and over ",": "]
]
Как следует из названия, я понятия не имею, почему список list выдает мне эту ошибку. Я попытался найти ошибку, но я новичок и не могу понять, что они говорят.
Ответ №1:
Вы пропускаете ,
после каждого элемента списка
theListofSalary = [
[" $0 - $9,999 ",": "],
["$10,000 - $19,999 ",": "],
....
Ответ №2:
Вам не хватает запятых между элементами вашего основного списка.
theListofSalary = [
[" $0 - $9,999 ",": "],
["$10,000 - $19,999 ",": "],
["$20,000 - $29,999 ",": "],
["$30,000 - $39,999 ",": "],
["$40,000 - $49,999 ",": "],
["$50,000 - $59,999 ",": "],
["$60,000 - $69,999 ",": "],
["$70,000 - $79,999 ",": "],
["$80,000 - $89,999 ",": "],
["$90,000 - $99,999 ",": "],
["$100,000 - $149,999 ",": "],
["$150,000 and over ",": "]
]
Вы заметите, что я добавил запятые ко всем, кроме последнего, и теперь это должно сработать 🙂
Комментарии:
1. @AkiraPatafio Без проблем. Это ситуация, когда IDE — ваш лучший друг. Как только я скопировал / вставил его в свой, стало ясно, в чем проблема, судя по тому, как он был выделен. Может быть, вы могли бы изучить возможность использования PyCharm (то, что я использую), поскольку это бесплатно. Хотя есть много других отличных IDE!
Ответ №3:
Вам не хватает запятых ( ,
) после каждой записи в вашем объявлении списка, как указано в других ответах. Однако другие ответы не объясняют, почему вы видите странную ошибку.
Что происходит, так это то, что Python думает, что вы пытаетесь произвести индексацию в первый внутренний список, используя второй внутренний список, который, оказывается, является типом данных кортежа (или неизменяемым списком, разделенным запятыми).
print([""][0]) # this works and prints ""
print([""][0, 0]) # TypeError: list indices must be integers, not tuple
Это важно понимать, потому что следующий код не вызывает проблем у интерпретатора и может привести к очень тонким ошибкам в большой программе:
theListofSalary = [
[" $0 - $9,999 "]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
]
print(theListofSalary)
Приведенный выше код печатается [' ']
. Вы можете понять, почему?
Другой пример:
theListofSalary = [
[" $0 - $9,999 "]
[0]
[12]
]
print(theListofSalary)
С принтами ['$']
. Опять же, вы можете понять, почему это работает?
theListofSalary = [
[" $0 - $9,999 "]
[0]
[80]
]
print(theListofSalary)
В приведенном выше примере мы получаем IndexError: string index out of range
.
theListofSalary = [
[" $0 - $9,999 "]
[0]
["hello world"]
]
print(theListofSalary)
Приведенный выше пример выдает TypeError: string indices must be integers
.
Надеюсь, вы начинаете видеть шаблон здесь! Короче говоря, не забудьте добавить запятые в объявления вашего списка, чтобы интерпретатор не перепутал ваши вложенные списки с операциями индексации в первом вложенном списке.
И последнее, но не менее важное, руководство по стилю Python предлагает snake_cased_variable_names
. Заголовок списка как the_list_of_salaries
излишне подробный; Я рекомендую называть этот список salaries
просто.