словарь на языке python суммирует цены с 2 входами

#python #python-3.x #python-2.7 #dictionary #dictionary-comprehension

Вопрос:

У меня есть 2 входа:

 # The key is the available dates and the value is the price
a = {"g": 109192, "e": 116374, "o": 183368, "s": 162719}

# The dates that the user wants to take, this is going to be input by the user separeted by a space
b = ("g", "n", "e", "k", "s")
 

Программа должна сообщить пользователю общую стоимость дат и указать, какая из них доступна.

Выход:

 388285
g e s
 

Мой код до сих пор:

 import json
a=input("")
b=list(input().split(' '))
dic=json.dumps(a)
def citas(dic,b):
  citas_disponibles=[]
  suma=0
  for dia in b:
    if dia in a:
      suma  = a[dia]
      citas_disponibles.append(dia)
  return citas_disponibles
citas(dic,b)
 

но «сума» генерирует «ошибку».

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

1. В чем заключается ваш вопрос? b = g n e k s в Python это не имеет смысла.

2. «b» будет вводиться пользователем, я имею в виду написать его таким образом, потому что он будет разделен пробелом.

Ответ №1:

 def give_date_pricesum(a,b):
    #assuming b is a list
    available_dates = []
    sum = 0
    for date in b:
        try:
            sum = sum   a[date]
            available_dates.append(date)
        except:
            print("date is not available")
    return sum,available_dates
 

Поэтому в основном в коде я пролистал список дат, которые хочет пользователь, и сверил их с нашим словарем цен. Всякий раз, когда присутствует желаемая дата, мы добавляем ее к сумме и, наконец, возвращаем сумму и доступные даты.
Если вы хотите запустить его для нескольких пользователей и хотите обновить словарь, то вам нужно удалить записи, которые будут выбраны по выбору пользователя. Для этого вы можете использовать del dictionary[key] формат.

Ответ №2:

Используйте понимание списка с get помощью метода:

 In [1]: a={"g": 109192, "e": 116374, "o": 183368, "s": 162719}    
In [3]: b = sum(a.get(i, 0) for i in "gneks")

In [4]: b
Out[4]: 388285