2014-11-28 2 views
0

Я спрашиваю вас, потому что я не знаю, куда обратиться. После 2 часов поиска я ничего не придумал.Сравнить длину листа в словаре

Так что я пишу программу, которая получает разные переменные, а затем присоединяет единицы к этим переменным.

Теперь все хранится в словаре, у которых есть переменные для ключей и единиц для значений. Итак, мой вопрос: как мы можем сравнить первый список в словаре с другими списками, которые в нем?

Мне нужно это, потому что длина блоков должна быть такой же ...

Вот мой код:

data = {} 
def test(): 
    variable = input("Please enter the name of variable: ") 
    data[variable]=[] 
    while True: 
     unit = input("Enter unit: ") 
     if unit == "": 
      break 
     data[variable].append(unit) 
     a = len(data[variable]) 
    while True: 
     start_again = input("Add another value to dictionary?(y/n: ") 
     start_again = start_again.lower() 
     if start_again == "d": 
      test() 
     elif start_again == "n": 
      break 
    print(data) 
test() 

Я новичок, так что не слишком сильно на меня.

Я с нетерпением жду ответов и предложений.

ответ

0

Вы можете попробовать это:

data = {} 
def test(): 
    while True: 
     variable = input("Please enter the name of variable: ") 
     new_list = [] 
     while True: 
      unit = input("Enter unit: ") 
      if unit == "":break 
      new_list.append(unit) 

Ниже вы можете сравнить список, который вы собираетесь добавить в словарь со списками, которые уже есть в словаре:

 if data: # when the dictionary is not empty 
      list_length = len(new_list) 
      other_lengths = [len(item) for item in data.items()] 

other_length переменными создает список длин всех текущих списков в словаре. Вы можете сделать какое-то сравнение в этот момент, если хотите, или просто добавить новый список и переменную в словарь. Тебе решать.

 else: # add new list and variable to empty dictionary 
       data[variable]= new_list 

     start_again = input("Add value to dictionary?(y/n): ").lower() 
     if start_again== 'y':continue 
     else: 
      return (data) # returns dictionary 

Ответный оператор возвращает словарь, так что вы можете присвоить его переменной, как показано ниже:

new_data = test() 
new_data # calling this would return your dictionary 
+0

Спасибо вам ответить, но я думаю, что вы пропустили точку. Мне нужно сохранить мои переменные и единицы для дальнейшего использования. А также размер единиц неизвестен, и он устанавливается, когда вы создаете свою первую переменную. – Hixxy

Смежные вопросы