0
votes

Conversion du dictionnaire en liste puis d'une liste en dictionnaire mais avec les mêmes valeurs

Salut à tous, j'aimerais savoir comment je peux convertir un dictionnaire en liste et vice versa, car le dictionnaire a déjà une valeur définie. un exemple est présenté ci-dessous.

['Firewall Service']

Suite à cela, j'ai utilisé cet ensemble de code pour le convertir en une liste, mais je ne voulais que la clé, par exemple le service de pare-feu

for ser in serviceli:
    upserli = list(serviceli)
    Newserli.append(upserli[0])
    print(Newserli)

donc la liste (Newserli) ressemble actuellement à ceci

#Dictionary
  serviceli["Firewall Service"] = "$1.2k/year"
  serviceli["Security Ops Centre"] = "$4.2k/year"
  serviceli["Hot Site"] = "$8.5k/year"
  serviceli["Data Protection"] = "$10.0k/year" 

mais maintenant je voudrais que la liste soit reconvertie dans un dictionnaire avec les mêmes valeurs clés que celles indiquées ci-dessus, y a-t-il un moyen de le faire? Merci beaucoup d'avance !


5 commentaires

Et d'où viendraient le reste des données nécessaires pour construire votre dict ??


@ThierryLathuille voulait peut-être une valeur d'espace réservé telle que None au lieu des données d'origine.


à quoi voulez-vous que la liste ressemble exactement? montre-nous un exemple


@Thierry Lathuille Pardon, pourriez-vous reformuler la question? Encore assez nouveau chez Python pour le moment mais je pense que c'est le problème auquel je suis confronté, si je devais reconvertir la liste en dictionnaire, il n'aurait que les clés sans aucune valeur.


Désolé pour le malentendu, je voulais que la valeur de l'espace réservé soit la même que le dictionnaire fourni ci-dessus


5 Réponses :


0
votes

Les dictionnaires ne peuvent pas se former sans valeurs, peut-être remplir avec des espaces réservés comme None :

another_dict = {k:v for k,v in serviceli.items()}

Vous pouvez obtenir des clés de dict avec

serviceli.keys()

Voulez-vous réformer dict:

serviceli = {x: None for x in serviceli.keys()}

Ou serviceli[:]

Vous avez des clés et des valeurs sous forme de paires de tuples? dict(myPairs)


3 commentaires

Je vois, mais si je voudrais que les espaces réservés aient les valeurs données dans le dictionnaire ci-dessus. Est-ce possible ?


Vérifiez la modification s'il vous plaît


Je vois, merci pour l'explication! obtenu ce que je voulais



0
votes

voici comment vous pouvez le transférer dans la liste des paires:

another_dict = {k:v for k,v in mylist} # or simply dict(mylist)

voici comment vous en faites à nouveau un dict:

mylist = list(dictionary.items()) 
>>>mylist  
[("Firewall Service", "$1.2k/year"),("Security Ops Centre", "$4.2k/year"),... ]
>>>mylist[0][0]
"Firewall Service"

Est-ce que cela répond à votre question?


1 commentaires

Je vois, oui, merci beaucoup!



1
votes

Si vous voulez créer un nouveau dict qui serait le même que le premier, mais en ne gardant que les clés dans votre liste, ce serait

serviceli = {}
serviceli["Firewall Service"] = "$1.2k/year"
serviceli["Security Ops Centre"] = "$4.2k/year"
serviceli["Hot Site"] = "$8.5k/year"
serviceli["Data Protection"] = "$10.0k/year"

newserli = ["Firewall Service"]

new_dict = {key: serviceli[key] for key in newserli}

print(new_dict)
# {'Firewall Service': '$1.2k/year'}

Donc, appliqué à vos exemples de données, cela donnerait:

new_dict = {key: serviceli[key] for key in newserli}


1 commentaires

Merci, cela a beaucoup aidé!



0
votes

Est-ce quelque chose que vous recherchez? Son j'ai converti un dcictionary en une liste de paires de clés et de valeurs, puis de nouveau au dictionnaire

dct={"Firewall Service":"$1.2k/year","Security Ops Centre":"$4.2k/year","Hot Site":"$8.5k/year","Data Protection":"$10.0k/year" }
print(dct)
dctlst=[]
for key,value in dct.items():
    dctlst.append([key,value])

print(dctlst)

resdct=dict(dctlst)
print(resdct)


1 commentaires

Pas tout à fait mais je vois à quoi ça sert, merci beaucoup!



0
votes

Voici une autre façon de procéder:

#Declaration
serviceli={}
dict_to_list = []
list_dictionary = {}
temp = []

serviceli["Firewall Service"] = "$1.2k/year"
serviceli["Security Ops Centre"] = "$4.2k/year"
serviceli["Hot Site"] = "$8.5k/year"
serviceli["Data Protection"] = "$10.0k/year"

#loop through the dictionary items and store in TEMP and then append to final list
for key,value in serviceli.items():
    temp = [key,value]
    dict_to_list.append(temp)

#construct dictionry from new list
list_dictionary = {item[0]  :  item[1] for item in dict_to_list}
print("This is the original Dictionary", serviceli)
print("This is the Dictionary created from List: ", list_dictionary)


0 commentaires