3
votes

clé de dictionnaire python 3 vers une chaîne et valeur vers une autre chaîne

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!


2 commentaires

La méthode que vous recherchez est keys () et non key () .


print (str (dict.keys ())) montre a vous devez utiliser keys () au lieu de key () < / code>


5 Réponses :


1
votes

https://docs.python.org/3/library/stdtypes .html # typesmapping

Les méthodes que vous recherchez sont keys () et values ​​() .


0 commentaires

6
votes

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.


0 commentaires

2
votes

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())


0 commentaires

4
votes
>>> d = { 1: 2 }
>>> [[key, value]] = ((str(key), str(value)) for key,value in d.items())
>>> key
'1'
>>> value
'2'

0 commentaires

2
votes

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()))


0 commentaires