Je veux créer ce dictionnaire, mais en utilisant une doublure forte>. C'est ce que j'ai initialement essayé et obtenu l'erreur, bien que {* * {'a': 1}, ** {'B': 2}} code> fonctionne parfaitement et donne
{'A': 1, 'B': 2} code>, mais en utilisant Cette formulation dans
Compréhension du dictionnaire Code> donne une erreur.:
-Compéhension code> Solution similaire. Toute suggestion? P>
# This solution is unelegant, so I don't want to use this.
dic2 = [{i+'_last_'+j:'buy' for i in ['apple','mango','banana']} for j in ['kg','3kg','4kg','6kg']]
new_dic = {}
for d in dic2:
new_dic.update(d)
print(new_dic)
{'apple_last_3kg': 'buy','apple_last_4kg': 'buy','apple_last_6kg': 'buy',
'apple_last_kg': 'buy','banana_last_3kg': 'buy','banana_last_4kg': 'buy',
'banana_last_6kg': 'buy','banana_last_kg': 'buy','mango_last_3kg': 'buy',
'mango_last_4kg': 'buy','mango_last_6kg': 'buy','mango_last_kg': 'buy'}
3 Réponses :
import itertools; {f'{goods}_last_{amount}': 'buy' for goods, amount in itertools.product(['apple','mango','banana'], ['kg','3kg','4kg','6kg'])}
Merci, laissez-moi l'essayer sur des versions inférieures de Python
Vous avez besoin de fonctionnalités python.org/dev/peps/pep-0274 et docs.python.org/2/library/itétools.html#itertools. produit pour que cela fonctionne. Cela signifie que vous avez besoin de python 2.7 ou plus récent.
Pour utiliser F-Strings, python.org/dev/peps/pep-0498 A>, vous avez besoin d'au moins 3,6.
Merci. Je vais en faire une note.
dict.fromkeys( (i+'_last_'+j for j in ['6kg','4kg','3kg','kg'] for i in ['apple','mango','banana']), "buy" ) See this classmethod here.
Ceci:
{'apple_last_kg': 'buy', 'apple_last_3kg': 'buy', 'apple_last_4kg': 'buy', 'apple_last_6kg': 'buy', 'mango_last_kg': 'buy', 'mango_last_3kg': 'buy', 'mango_last_4kg': 'buy', 'mango_last_6kg': 'buy', 'banana_last_kg': 'buy', 'banana_last_3kg': 'buy', 'banana_last_4kg': 'buy', 'banana_last_6kg': 'buy'}
Que considérez-vous exactement inélégant à propos de votre solution? Pour moi, la chose la plus inélégante est que la solution est forcée d'être sur une seule ligne;)
Eh bien, j'apprécie votre perspective et ce que vous dites est bien correct.