Как добавить несколько значений к ключу с помощью функции в Python? - PullRequest
2 голосов
/ 10 ноября 2019

Я хочу объявить переменную dictName. Затем я хотел бы реализовать функцию, которая добавляет значения к ключам dictName. и я хочу, чтобы эти ключи были добавлены в функцию так же хорошо.

Так что в принципе что-то вроде того, что я пробовал, не работает, поскольку обновляет только последний вызов функции и не добавляет его!:

dictName = dict()

def addValToDict(val1,val2):
   dictName.update([('firstkey:', [val1]),('secondKey:', [val2])])

addValToDict(5,1)
addValToDict(6,3)
addValToDict(-2,2)

Вывод получаю:

{'firstkey:': [-2], 'secondKey': [2]}

Вывод желаю:

{'firstkey:': [5,6,-2], 'secondKey': [1,3,2]}

Ответы [ 5 ]

1 голос
/ 10 ноября 2019

Я думаю, вы могли бы использовать defaultdict из list.

from collections import defaultdict
dictName = defaultdict(list)

def addValToDict(val1,val2):
    dictName['firstkey'].append(val1)
    dictName['secondKey'].append(val2)
1 голос
/ 10 ноября 2019

Это у вас работает?

dictName = dict()
dictName['firstKey']=[]
dictName['secondKey']=[]

def addValToDict(val1,val2):
   dictName['firstKey'].append(val1)
   dictName['secondKey'].append(val2)

addValToDict(5,1)
addValToDict(6,3)
addValToDict(-2,2)
#{'secondKey': [1, 3, 2], 'firstKey': [5, 6, -2]}
0 голосов
/ 10 ноября 2019

Вам необходимо добавить текущую запись, а не обновлять ее (что полностью заменяет ее). Любой из них должен работать для вас:

dictName = dict(firstkey=[], secondkey=[])

def addValToDict(val1, val2):
    dictName['firstkey'].append(val1)
    dictName['secondkey'].append(val2)

или

dictName = dict()

def addValToDict(val1, val2):
    dictName.setdefault('firstkey', []).append(val1)
    dictName.setdefault('secondkey', []).append(val2)

Если вы не уверены, какие записи вы в конечном итоге будете писать или читать, тогда это еще один вариант:

import collections
dictName = collections.defaultdict(list)

def addValToDict(val1, val2):
    dictName['firstkey'].append(val1)
    dictName['secondkey'].append(val2)
0 голосов
/ 10 ноября 2019

Ниже печатается требуемый вывод

dictName = dict()

def appendValue(key, value):
    dictName.setdefault(key, []).append(value)

def addValToDict(val1,val2):
    appendValue('firstkey', val1)
    appendValue('secondKey', val2)


addValToDict(5,1)
addValToDict(6,3)
addValToDict(-2,2)

print(dictName)

ОБНОВЛЕНИЕ

Спасибо @Jon Clements. Использование 'setdefault' помогло мне удалить сравнение not in.

0 голосов
/ 10 ноября 2019

Вы можете сделать это так

def addValToDict(val1,val2):
   dictName['firstKey'] += [val1]
   dictName['secondKey'] += [val2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...