我希望能够找到一个特定的数据块使用d

2024-06-28 19:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一些数据的字典。当我打印它时,它会在两个不同的列中打印出来。我已经在这里寻找如何搜索它,并找到一个特定的数据块,但这是没有任何意义的我。如果你能告诉我如何通过这个搜索(使用日期),然后打印出数据,那将不胜感激

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()

Tags: to数据inyouforinputdataif
3条回答

您需要更改:

if whatdata in rainfall:
    print(find(whatdata)

if whatdata in rainfall.keys():
    print(rainfall[whatdata])

可以重写函数以利用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)

您可以在searching_for_data中使用get函数:

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))

如果该键不存在,它允许您定义一个默认值(或者为用户定义一条消息)

但是,更好的方法是让函数返回值并在顶层执行print命令:

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())

相关问题 更多 >