проблемы со словарем в коде Python

avatar
Philip Shangguan
1 июля 2021 в 16:43
68
2
0

Мой преподаватель Data Science опубликовал код, которому мы должны следовать в качестве домашнего задания. Вот его часть:

def create_compare_df() -> pd.DataFrame: 
 """Generate comparison dataframe for lists. 
   Returns 
 -------- 
 pd.Dataframe 
 Pandas data frame containing time metrics for selection sort algorithm  -------- 
 """ 
  
 compare: dict = { 
 "array_length" : [512, 1024, 2048, 4096, 8192], 
 "sorted_time": [], 
 "binarysearch_time": [], 
 "linearsearch_time": [], 
 } 
  
 for i in compare["array_length"]: 
.........

Я не знаю, что такое часть "Сравнить: dict =...", и когда я тестировал код, он говорит, что "сравнить" не определено...

Я никогда не встречал словарь, определенный выше. есть идеи?

Спасибо, Филипп

Источник
erip
1 июля 2021 в 16:44
0

Эта аннотация типа используется плохо. Ваш код должен работать, если вы удалите : dict.

Philip Shangguan
1 июля 2021 в 16:49
0

Я попробовал это и просто сделал «печать (сравните)» и получил сообщение об ошибке «NameError: имя« сравнение »не определено».

Barmar
1 июля 2021 в 16:53
0

Вы, должно быть, что-то неправильно напечатали. Если вы написали compare = { ... }, это должно определить переменную.

Barmar
1 июля 2021 в 16:53
0

Ваш print(compare) внутри функции? Переменная является локальной, поэтому вы не можете распечатать ее вне функции.

Barmar
1 июля 2021 в 16:54
0

Убедитесь, что вы правильно скопировали отступ. Вот почему мы рекомендуем 4 пробела отступа, чтобы его было легко увидеть.

Ответы (2)

avatar
Akshay Reddy
1 июля 2021 в 16:57
1

compare — имя переменной, данное ему! Ваш код может работать, если вы сделаете следующее...

compare = { 
    "array_length" : [512, 1024, 2048, 4096, 8192], 
    "sorted_time": [], 
    "binarysearch_time": [], 
    "linearsearch_time": [] 
}
Philip Shangguan
1 июля 2021 в 17:15
0

Спасибо, это работает. У меня другая проблема с кодом, и это будет другой вопрос.

erip
1 июля 2021 в 18:28
1

: dict не имеет ничего общего с приведением типов. :-)

avatar
Bag
1 июля 2021 в 17:00
1

Я бы удалил часть уравнения dict = {}, так как его можно использовать для референса. Я бы сделал следующее:

 def create_compare_df() -> pd.DataFrame: 
     """Generate comparison dataframe for lists. 
       Returns 
     -------- 
     pd.Dataframe 
     Pandas data frame containing time metrics for selection sort algorithm  -------- 
 """ 
  
     compare = { 
     "array_length" : [512, 1024, 2048, 4096, 8192], 
     "sorted_time": [], 
    "binarysearch_time": [], 
    "linearsearch_time": [], 
    } 
  
    print(compare)

В принципе, вы должны быть осторожны с отступами. Поэтому убедитесь, что в строках после def.

есть табуляция.

Сообщите мне, если проблема не устранена.

Philip Shangguan
1 июля 2021 в 17:15
0

Спасибо, это работает. У меня другая проблема с кодом, и это будет другой вопрос.

Bag
1 июля 2021 в 17:38
0

Без проблем. Рад помочь