#python #list #dictionary #tuples
Вопрос:
Подход 1:
def get_dict(lists):
lists.sort()
summing=0
value=''
mydict={}
for i in my_list:
print(i)
if (value in i[0]):
summing = summing i[1]
mydict[i[0]] = summing
value = i[0]
else:
summing = i[1]
value = i[0]
print(mydict)
Подход 2:
def get_dict(mylists):
d={}
for item in my_list:
if item[0] in d.keys():
d[item[0]] = d.get(item[0]) item[1]
else:
d[item[0]] = item[1]
print(d)
Ввод
мой список = [(‘a’,1), (‘b’,2), (‘b’,3), (‘a’,5), (‘c’,20), (‘a’,15), (‘c’,40)]
get_dict(мой список)
Выход
{‘a’: 21, ‘b’: 5, ‘c’: 60}
Комментарии:
1. Какой у тебя вопрос? Пожалуйста , не называйте переменные
sum
, это перезаписывает встроенное.2. Используя
defaultdict
:d = defaultdict(int); for a,b in my_list: d[a] = b
3. Спасибо за ваш комментарий, внес правку и добавил другой подход
4. Я не хотел использовать dict по умолчанию, так как тип возвращаемого вывода меняется на —->defaultdict(int, {‘a’: 21, ‘b’: 5, ‘c’: 60})
5. Вы можете просто
return dict(d)
вернуть словарь.
Ответ №1:
Вам просто нужно проверить, существует ли ключ уже или нет.
my_list = [('a',1), ('b',2), ('b',3), ('a',5), ('c',20), ('a',15), ('c',40)]
dic = dict()
for i in my_list:
if i[0] not in dic:
dic[i[0]] = i[1]
else:
dic[i[0]] = i[1]
dic
# {'a': 21, 'b': 5, 'c': 60}