Я хочу, чтобы можно было найти конкретную часть данных, используя дату - PullRequest
0 голосов
/ 10 октября 2018

Это словарь для некоторых данных.Когда я его печатаю, он распечатывается в двух разных столбцах.Я искал здесь, как искать и находить определенный фрагмент данных, но это не имеет никакого смысла для меня.Если бы вы могли сказать мне, как я мог бы выполнить поиск (используя дату), а затем распечатать данные, это было бы очень полезно.

rainfall = {
    '01/08/2014':1.0,
    '21/01/2015':0.20,
    '22/01/2015':0.10,
    '23/01/2015':1.00,
    '24/01/2015':0.30,
    '25/01/2015':0.40,
    '26/01/2015':0.75,
    '27/01/2015':0.20,
    '28/01/2015':1.00,
    '29/01/2015':0.20,
    '30/01/2015':0.20,
    '31/01/2015':0.30,
    }

for k, v in rainfall.items():
    print(f'{k:<4} - {v}')


def searching_for_data():
    whatdata=input("What date would you like to find (format: DD/MM/YYYY)")
    if whatdata in rainfall:
        print(find(whatdata))


finddata=input("Would you like to find a specific piece of data?")
if finddata == "Yes":
    searching_for_data()

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Вы можете переписать вашу функцию, чтобы использовать dict.__getitem__ или ее синтаксический сахар []:

def searching_for_data():
    whatdata = input("What date would you like to find (format: DD/MM/YYYY)")
    if whatdata in rainfall:
        print(rainfall[whatdata])

Но вы должны привыкнуть иметь значения функций return.Приведенное выше решение также ничего не сделает, если ключ не существует, когда вы можете захотеть увидеть None.Например, используя dict.get:

def searching_for_data():
    """Return value if it exists in dictionary, else None"""
    whatdata = input("What date would you like to find (format: DD/MM/YYYY)")
    return rainfall.get(whatdata)

finddata = input("Would you like to find a specific piece of data?")
if finddata == "Yes":
    data = searching_for_data()
    print(data)
0 голосов
/ 10 октября 2018

Вы можете использовать функцию get в вашем searching_for_data:

def searching_for_data():
    whatdata = input("What date would you like to find (format: DD/MM/YYYY)")
    print(rainfall.get(whatdata, 'No data for ' + whatdata))

Это позволяет вам определить значение по умолчанию (или сообщение для пользователя, в вашем случае), если ключ несуществовать.

Однако еще лучшим способом было бы позволить функции вернуть значение и выполнить команду печати на верхнем уровне:

def searching_for_data():
    whatdata = input("What date would you like to find (format: DD/MM/YYYY)")
    return rainfall.get(whatdata, 'No data for ' + whatdata)

...

print(searching_for_data())
0 голосов
/ 10 октября 2018

Вам необходимо изменить:

if whatdata in rainfall:
    print(find(whatdata)

на

if whatdata in rainfall.keys():
    print(rainfall[whatdata])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...