#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