Как найти, какая запись определенного фрагмента данных находится в массиве?

#python #arrays #record

Вопрос:

Я пишу программу для своего класса, в которой я должен получить входные данные от пользователя и поместить эти данные в запись, которая, в свою очередь, переходит в массив.

 def createArray0fRecords(length):
  city_records = ["", "", 0.0,""]#Create record
  #City, Country, Population in Millions, Main Language

  city_array = [city_records]*length #Create Array of Records

  return city_array

def populateRecords(city_array):
  for counter in range (0, len(city_array)):
      print("")
      print("Please enter the city")
      city=input()

      print('Please enter the country')
      country=input()

      print("Please enter the population in millions")
      population=float(input())
      while population < 0:
        print(population," isn't a valid answer. Please input a number greater than 0.")
        population=input()
      print("Please enter the main language")
      language = input()

      city_array[counter] = [city, country, population, language]

  return city_array

def main_program():
  print("How many cities will you be entering?")
  length = int(input())
  city_array = createArray0fRecords(length)
  city_array = populateRecords(city_array)
  print("What city would you like the information about?")
  city=input()
  if city in (city_array[1]):
    print(city_array[city])

main_program()
 

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

Извините, я новичок в stack overflow и понял, что неправильно сформулировал свой вопрос, что я должен сделать, это собрать всю информацию, затем я должен ввести, о каком городе я хотел бы получить информацию, и программа предоставит мне информацию об этом городе

Комментарии:

1. Добро пожаловать в Stack Overflow. В чем здесь собственно вопрос? Что конкретно должно произойти, когда вы запускаете программу, и чем это отличается от того, что происходит на самом деле?

2. Извините, я новичок в stack overflow и понял, что неправильно сформулировал свой вопрос, что я должен сделать, это собрать всю информацию, затем я должен ввести, о каком городе я хотел бы получить информацию, и программа предоставит мне информацию об этом городе.

Ответ №1:

Вы можете отфильтровать city_array по соответствующему названию города следующим образом (вы можете прочитать о понимании списка здесь).

 relevant_cities = [c for c in city_array if c[0] == city]
 

relevant_cities теперь будет списком всех записей, имеющих город, равный вводу пользователя. Теперь вы можете проверить, пуст ли этот список, и делать с ним все, что захотите.

Комментарии:

1. Спасибо! Итак, это способ сделать это, и это просто поместить эту строку кода в мою программу, или есть еще что-то, что нужно сделать?

2. Есть и другие способы сделать это, но, по сути, достаточно вставить эту строку в вашу программу вместо «если город в (city_array[1]): …». После этой строки вы можете написать print(relevant_cities[0]), чтобы получить первый элемент, который имеет значение. Но будьте осторожны, если соответствующий город не будет найден, будет выдана ошибка.

3. Идеальная пара, тай