J'ai un dictionnaire dans lequel je veux lire chaque touche individuelle à l'envers jusqu'à ce qu'elle atteigne le trait de soulignement. Une fois qu'il atteint le trait de soulignement, il devrait s'arrêter pour que je puisse définir son élément comme égal à une nouvelle variable.
Je comprends que je peux utiliser str.partition () pour séparer à un certain caractère et que je peux utiliser [:: - 1] pour lire une chaîne à l'envers, mais je ne sais pas comment les utiliser avec un dictionnaire.
Payload_Values = {'Voltage_asleep(V)' : 10, 'Current_asleep(A)' : 5, 'Wattage_asleep' : 50}
for c in (Payload_Values.keys())
Payload_Values.partition(_)
Vous devez itérer un dict avec keys()
ou items()
, pas iteritems()
, en Python3, vous devez convertir ces itérateurs en listes, sinon cela entraîne une erreur si vous ajoutez un nouvel élément au dict lors de l'itération (je mentionne juste, c'était ok dans votre exemple) . Sinon, vous êtes proche de la solution. Je ne comprends tout simplement pas complètement, que voulez-vous faire avec la clé? Imprime le? Prendre le rôle après le dernier trait de soulignement? Définir une nouvelle paire clé-valeur? Sans le savoir, j'essaie de présenter toutes les combinaisons, veuillez demander plus précisément si vous avez besoin d'autre chose:
# this is because Python3 compatibility:
from __future__ import print_function
from future.utils import iteritems
for key, val in iteritems(Payload_Values):
# new key is the part after the last underscore
# or the whole string, if it does not contain underscore:
new_key = key.split('_')[-1]
# new key is the elements separated by `_`, reversed
# and rearranged to a string:
key_rev = '_'.join(key.split('_')[::-1])
# new key is the complete string reversed:
new_key = key[::-1]
#
# set a new element with the new key:
Payload_Values[new_key] = 'your new value'
# print the new key:
print(new_key)
# if you want to modify the dict in this loop:
for key, val in list(Payload_Values.items()):
# ...
Payload_Values[some_key] = some_value
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots