diccionario: ¿Existe alguna manera de combinar claves comunes y agregar valores en Python?

CorePress2024-01-24  10

Hola, he visto varias publicaciones sobre cómo combinar dos diccionarios en Python. Sin embargo, lo que me gustaría hacer es combinar claves similares en el mismo diccionario y agregar los valores. ... en verdad, lo que haré inicialmente es cambiar el nombre de las claves en varias categorías y luego me gustaría combinar claves similares y agregar los valores. ¿Existe un método sencillo para hacer esto posible? Por el momento he optado por iterar y cambiar claves... pero parece una forma lenta de hacer las cosas. Me pregunto si debo o no iterar primero sobre la descripción de la transacción y crear una nueva lista y luego comprimirla o no. Cualquier idea se agradece.

aquí está mi modesto comienzo

df = pd.read_csv("spreadsheet.csv")
item = df['Transaction Description']
cost = df['Debit Amount']

purchases = {}

purchases = {}
key, value in zip(item, cost):
purchases[key] = value


keys = purchases.keys()


 for i in purchaces.keys {
  if key == "Soverign housing" 
  purchases [Rent] = purchaces[Soverign housing]
 del dictionary[Soverign housing]
 ...etc


------------------------------------

La más sencilla es utilizar in para ver si un nuevo diccionario contiene una clave de cada diccionario. en este ejemplo utilicé *args, que es la lista de argumentos para hacerlo más flexible.

dic_a = {'A': 20, 'B': 30, 'C': 40}
dic_b = {'A': 5, 'C': 2, 'F': 100}
dic_c = {'H': 32, 'K': 75, 'G': 15}

def combine_dict(*args):
    comb = dict()
    for dic in args:
        for key in dic:
            if key in comb:
                comb[key] += dic[key]
            else:
                comb[key] = dic[key]
    return comb

if __name__ == '__main__':
    print(combine_dict(dic_a, dic_b))
    print(combine_dict(dic_a, dic_b, dic_c))



------------------------------------

No entiendo qué quieres decir con valores condensados, etc.

@user1717828 es correcto al solicitar código de entrada/salida para que podamos entenderlo claramente.

Pero lo que entiendo es que cuando combinas 2 objetos dict, debes mantener las mismas claves pero combinar valores, por ejemplo

dict_a = {'A':1, 'B': 2, 'C':3}
dict_b = {'A':10, 'C': 20, 'D':30}

for key,val in dict_b:
    try:
        _key = dict_a[key]  # Already Exist Key in Dict A
    except: # If Object does not Exist
        dict_a[key]=val
    else: # If exist Then Make a list and Append
        dict_a_val = dict_a[key] #Current value in dict_a
        dict_a[key] = []
        dict_a[key].append(dict_a_val)
        dict_a[key].append(val)

#output:
# {'A':[1,10], 'B': 2, 'C':[3,20] , 'D':30}

Espero que estuvieras buscando esto

1

Hola organización Zevhy, sí, eso es correcto, así que después de cambiar las claves a las categorías deseadas, quiero combinar claves similares y agregar los valores. así que para aclarar es de una declaración... en este momento tengo un diccionario que dice algo como {bp: 21, esso: 23, vivienda: 1000} quiero que esto se convierta en {combustible:21, combustible:23, alquiler:1000 } y finalmente {combustible:44, alquiler:1000}

- C2100

27/03/2021 a las 14:36

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare