如何提取具有其值的键并添加值以在python字典中打印总数?

问题描述 投票:2回答:2

这里有餐厅的菜单及其价格。我要检查订单并添加价格,并打印订单总价。但是我无法提取特定命令的键值。如何一起显示订单及其价格,如

malesuada:$ 14.00抱歉,我们没有披萨maecenas:$ 12.00

总价:$ 26.00

menu_items = {
    'nulla aliquam': 15.00,
    'malesuada': 14.00,
    'feugiat ipsum': 9.00,
    'maecenas': 12.00,
    'fermentum mass': 23.00
}
ordered_items = {
    'maecenas',
    'pizza',
    'malesuada'
}
for item in ordered_items:
    if item in menu_items.keys():
      print(item)
    else:
      print("sorry we dont have ",item)

python python-3.x dictionary key key-value-store
2个回答
2
投票

两件事:

  • 您不需要使用.keys()来检查字典中是否存在键

  • 您使用字典索引来访问价格:dictionary[key] -> value

total = 0
for item in ordered_items:
    if item in menu_items:
        print('{} : ${:2f}'.format(item, menu_items[item]))
        total += menu_items[item]
    else:
        print('Sorry we don\'t have {}'.format(item))

print('Total price : ${:2f}'.format(total))

0
投票

您可以使用列表理解来获取ordered_items中项目的菜单价格,请注意,您为ordered_items创建的结构不是set而是字典。

menu_items = {
    'nulla aliquam': 15.00,
    'malesuada': 14.00,
    'feugiat ipsum': 9.00,
    'maecenas': 12.00,
    'fermentum mass': 23.00
}
ordered_items = {
    'maecenas',
    'pizza',
    'malesuada'
}

totalPrice = sum([v for k,v in menu_items.items() if k in ordered_items])
print(totalPrice)

输出:

26.0

列表理解只是执行以下for循环的一种更好的方法:

编辑有关按顺序打印每个项目的说明。

total_price = 0 
for item in ordered_items:
    if item in menu_items:
        print(f"{item} : ${menu_items[item]} ")
        total_price += menu_items[item]
    else:
        print(f"Sorry, we don't have {item}")
print(f'Total : ${total_price}')

输出:

maecenas:$ 12.0

对不起,我们没有披萨

malesuada:$ 14.0

总计:$ 26.0

要在一行上打印所有这些,请将每个语句附加到每个循环的一个字符串上,并在末尾打印此:

total_price = 0 
printString = ''
for item in ordered_items:
    if item in menu_items:
        printString += f"{item} : ${menu_items[item]} "
#        print(f"{item} : ${menu_items[item]} ")
        total_price += menu_items[item]
    else:
#        print(f"Sorry, we don't have {item}")
        printString += f"Sorry, we don't have {item} "
#print(f'Total : ${total_price}')
printString +=  f"Total : ${total_price} "

print(printString)

输出:

maecenas:$ 12.0对不起,我们没有披萨malesuada:$ 14.0总计:$ 26.0

© www.soinside.com 2019 - 2024. All rights reserved.