donc j'ai une liste et j'y ai un dict, j'ai une fonction où demander avec 2 entrées quel dict ajouter, alors j'ai une autre fonction avec 1 entrée pour laquelle dict remove, est-ce possible de faire ça?
my_list = [{"a":"b"},{"e":"f"}]
si j'ajoute quelque chose comme {"e": "f"} devient
XXX
j'ai besoin d'une fonction qui supprime un dict comme {"c": "d"}
def remove_dict():
delete = input("with dict want remove? ")
où le résultat devrait être p>
my_list = [{"a":"b"},{"c":"d"},{"e":"f"}]
3 Réponses :
En supposant que vous cherchiez simplement à supprimer la valeur en spécifiant la clé du dictionnaire, vous pouvez faire ce qui suit:
remove_dict()
with dict want remove? {'c': 'd'}
my_list
[{'a': 'b'}, {'e': 'f'}]
spécifiez simplement la lettre sur demande et il devrait supprimer la valeur de votre liste de dictionnaires.
par exemple:
def remove_dict():
delete_value = input("with dict want remove? ")
for i in range(len(my_list)-1):
if str(my_list[i]) == delete_value:
del my_list[i]
juste une note: la façon dont il est configuré, vous n'avez pas besoin d'utiliser des guillemets (' ') dans votre entrée.
si vous voulez spécifier la valeur entière du dictionnaire (c'est-à-dire {"c": "d"}) alors cela fonctionnerait:
my_list = [{"a":"b"},{"c":"d"},{"e":"f"}]
my_list
[{'a': 'b'}, {'c': 'd'}, {'e': 'f'}]
remove_dict()
with dict want remove? c
my_list
[{'a': 'b'}, {'e': 'f'}]
c'était ce que je cherchais
Ravi de l'entendre! Faites-moi savoir si vous avez encore des questions
N'oubliez pas de confirmer la bonne réponse afin que les personnes ayant la même question puissent s'y référer. @GiulioZorzi
Pourquoi s'embêter avec des listes et des index supplémentaires for i in range (len (my_list) -1): if list (my_list [i] .keys ()) == [delete_value]: del ma_list [i] ? Faites simplement pour un_dict dans ma_liste_de_dicts: if delete_value dans a_dict.keys (): del a_dict .
@Guimoute Bonjour, il a précisé dans ses commentaires qu'il n'était pas intéressé par la suppression de l'élément en fonction de la clé, mais de la combinaison clé + valeur réelle
Oui, mais vous souhaitez toujours parcourir les objets eux-mêmes et non une plage.
cela permet plus de flexibilité quant à l'élément que vous souhaitez appeler avec l'instruction for. Nous n'optimisons pas particulièrement la vitesse ici et comme le type d'entrée, le type d'élément de liste réel et le type de clé sont tous des types différents, il est agréable d'avoir cette flexibilité supplémentaire.
vous pouvez simplement parcourir la liste des dictionnaires et vérifier si l'élément que vous souhaitez supprimer est une clé dans chaque dict.
with dict want remove? c
[{'a': 'b'}, {'e': 'f'}]
my_list = [{"a":"b"},{"c":"d"},{"e":"f"}]
delete = input("with dict want remove? ")
for index, dic in enumerate(my_list):
if delete in dic:
del my_list[index]
print(my_list)
semble que pour votre cas d'utilisation pour stocker vos données d'entrée dans un dict, il est plus approprié que dans une liste:
def remove_dict():
key = input("with dict want remove? ")
my_dict.pop(key) # you may want to check if the key is in the dict
et de supprimer:
my_dict = {"a":"b", "c":"d"}
def add_dict():
add_key = input("insert key : ")
add_value = input("insert value: ")
my_dict[add_key] = add_value
Pourquoi une liste de dictionnaires au lieu d'un simple dictionnaire? Vous pouvez alors faire
del yourdict [key].Voulez-vous supprimer un dictionnaire qui a une clé
"c"? Ou un avec spécifiquement la paire clé-valeur"c:" "d"?@Guimoute qui dictent spécifiquement