plusieurs paires clé-valeur dans dict compréhension
Je suis en train de créer plusieurs paires de valeur : dans un dict compréhension comme ceci:
{'ID': (e[0]), 'post_author': (e[1]) for e in wp_users}
Je reçois "missing ','"
J'ai aussi essayé de cette façon:
[{'ID': (e[0]), 'post_author': (e[1])} for e in wp_users]
J'ai alors reçu "list indices must be integers, not str"
Que je comprends, mais vous ne savez pas la meilleure façon de corriger cela et si plusieurs paires de valeur : qui est possible avec les dict interprétations?
est wp_users une liste?
Deuxième façon fonctionne très bien pour moi. Ce type est
Les crochets autour de
wp_users est un n-uplet.
Lorsque j'essaie d'accéder "post_author" par exemple:
Deuxième façon fonctionne très bien pour moi. Ce type est
wp_users
?Les crochets autour de
e[0]
sont inutiles iciwp_users est un n-uplet.
Lorsque j'essaie d'accéder "post_author" par exemple:
wp_users_list['post_author']
est quand je reçois "list indices must be integers, not str"
OriginalL'auteur mdxprograms | 2014-06-01
Vous devez vous connecter pour publier un commentaire.
Un dictionnaire, la compréhension ne peut jamais produire un paire clé-valeur par itération. L'astuce est alors de produire une boucle supplémentaire pour séparer les paires:
Ceci est équivalent à:
OriginalL'auteur Martijn Pieters
Je suis tombé sur cette vieille question par accident, et je ne suis pas convaincu par le a accepté de répondre.
Accepté de répondre à
Ce qui est inquiétant avec la accepté de répondre? Considérez ceci:
wp_users
,e = (1, 'Bill')
, le dict est{'ID':1, 'post_author': 'Bill'}
wp_users
,e = (2, 'Bob')
, le dict est totalement écrasé à{'ID':2, 'post_author': 'Bob'}
À chaque itération, toutes les valeurs de la dictonary sont écrasés. Vous pouvez éviter une boucle et sauter directement au dernier élément de
wp_users
:Ou:
Je pense que ce n'est pas ce que vous voulez.
Ce que vous essayez d'atteindre reste incertaine, mais je vois deux options: vous avez une liste d'utilisateurs
(id, post_author)
et vous souhaitez créer une liste de dictionnaires (un dict par l'utilisateur) ou d'un dictionnaire des n-uplets (un tuple par champ). Vous pouvez voir la première version de la présentation par des lignes, et le second comme une présentation par colonnes de données.Une liste de dictionnaires
Essayez ceci:
Pour chaque
user
,zip
permettra de créer des tuples('ID', id)
et('post_author', author)
etdict
va générer les dictionnaires. Maintenant, vous pouvez accéder aux champs comme ça:Un dictionnaire de tuples
C'est plus rare, mais vous voudrez peut-être un dictionnaire dont les valeurs sont des n-uplets:
zip(*wp_users)
crée simplement une liste de tuples[(id1, id2, ...), (post_author1, post_author2, ...)]
et le reste est similaire à la précédente version.Bonus
Pour extraire une colonne à partir de la ligne de vue:
Pour extraire une ligne de la colonne de la vue:
OriginalL'auteur jferard
Je pense que votre problème est que la deuxième version est la création d'un liste de dictionnaires, et pas seulement un dictionnaire. Vous essayez d'accéder à une liste de chaînes de caractères, qui génère l'erreur:
Au lieu de cela, il suffit d'accéder à la deuxième version `wp_list[0]['post_author'], et il devrait fonctionner correctement:
OriginalL'auteur A.J. Uppal