以字典格式打印循环的输出

时间:2021-04-25 08:44:56

标签: python dictionary printing

我的程序查询数据库并返回今天、明天和即将到来的所有生日。然而,我希望即将到来的生日在一行而不是几行。这是它的外观: 生日在不同的行:

1

这是我的代码:

def in_a_week():
    coming_up = datetime.now()

    with open('bDay_db.json')as read_file:
        bdays = json.load(read_file)

    for x in range(2, 5):
        soon = (coming_up + timedelta(days=x))
        upcoming = (soon.strftime('%b %d'))
        #pprint.pprint(upcoming)

   

        if upcoming in bdays.values():
            print()
            print("Birthday match found in next couple of days: ")
            print()
            print([kv for kv in bdays.items() if kv[1] in upcoming])
            print()

1 个答案:

答案 0 :(得分:1)

def in_a_week():
    coming_up = datetime.now()

    with open('bDay_db.json')as read_file:
        bdays = json.load(read_file)

    for x in range(2, 5):
        soon = (coming_up + timedelta(days=x))
        upcoming = (soon.strftime('%b %d'))
        #pprint.pprint(upcoming)

   
        print("Birthday match found in next couple of days: ")
        if upcoming in bdays.values():
            print([kv for kv in bdays.items() if kv[1] in upcoming], end = ", ")
        print()

这应该可行!

出了什么问题? 正如您所说,您希望日期在同一行。因此,首先,您使用了打印语句,它在输出中添加了一个换行符。此外,Birthday match found in next couple of days: 语句位于循环内。那应该只在开头打印,对吗?

修复了什么? 我首先删除了打印语句。然后 end=", " 确保在打印语句之后,您的下一个输出保持在同一行。在这里,为了增加功能,我在里面放了一个逗号,所以看起来很漂亮。此外,正如我已经提到的,Birthday match found in next couple of days: 被置于循环之外。最后,我放置了一个空白的打印语句,以确保一旦您退出循环,您的输出就会出现在新的一行。