s'il existe un dictionnaire:
str(dict.key()) # returns 'dict' object has no attribute 'key'
json.dump(dict) # returns {'a':'b'} in string, but hard to process
en python 3, je voudrais convertir cette clé de dictionnaire en chaîne et sa valeur en une autre chaîne:
print(key) key='a' print(type(key)) str print(value) value='a' print(type(value)) str
Quelques tentatives:
dict={'a':'b'}
Une solution simple? Merci!
5 Réponses :
https://docs.python.org/3/library/stdtypes .html # typesmapping
Les méthodes que vous recherchez sont keys () et values () .
Utilisez dict.items () code> :
Vous pouvez utiliser dict.items () ( dict.iteritems () pour python 2), il renvoie des paires de clés et de valeurs, et vous pouvez simplement choisir sa première.
>>> d = {'some_key': 1}
>>> key, value = next((str(k), str(v)) for k, v in d.items())
>>> key
'some_key'
>>> value
'1'
>>> type(key)
<class 'str'>
>>> type(value)
<class 'str'>
J'ai converti d.items () en liste, et choisi son index 0 , vous pouvez également convertir dans un itérateur, et choisissez son premier en utilisant next:
>>> key = next(iter(d.keys())) >>> key 'a' >>> value = next(iter(d.values())) 'b'
Utilisez dict.keys () et dict.values () :
Vous peut également utiliser dict.keys () pour récupérer toutes les clés du dictionnaire et choisir sa première clé. Et utilisez dict.values () pour récupérer toutes les valeurs du dictionnaire:
>>> key = list(d.keys())[0] >>> key 'a' >>> value = list(d.values())[0] >>> value 'b'
Ici, vous pouvez utiliser next (iter (. ..)) aussi:
>>> key, value = next(iter(d.items())) >>> key 'a' >>> value 'b'
Assurez-vous d'obtenir un str :
Les méthodes ci-dessus ne garantissent pas la récupération d'une chaîne, elles renverront quel que soit le type réel de la clé et la valeur. Vous pouvez les convertir explicitement en str:
>>> d = { 'a': 'b' }
>>> key, value = list(d.items())[0]
>>> key
'a'
>>> value
'b'
Maintenant, à la fois la clé et la valeur code > sont str . Bien que la valeur réelle dans dict était un int .
Clause de non-responsabilité : ces méthodes choisiront la première paire clé / valeur du dictionnaire s'il a plusieurs paires clé / valeur et ignorez simplement les autres. Et cela ne fonctionnera PAS si le dictionnaire est vide. Si vous avez besoin d'une solution qui échoue simplement s'il y a plusieurs valeurs dans le dictionnaire, La réponse de @ SylvainLeroux est celle que vous devriez rechercher.
Faites des listes de clés et de valeurs:
key = keys[0] value = values[0]
puis créez des variables:
dict={'a':'b'}
keys = list(dict.keys())
values = list(dict.values())
>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'
Pour avoir une solution avec plusieurs clés dans dict sans aucune importation, j'ai utilisé la solution légère suivante.
dict={'a':'b','c':'d'}
keys = "".join(list(dict.keys()))
values = "".join(list(dict.values()))
La méthode que vous recherchez est
keys ()et nonkey ().print (str (dict.keys ()))montreavous devez utiliserkeys ()au lieu dekey () < / code>