![](/img/trans.png)
[英]Create combinations from two lists and create dictionary with separate key in Python
[英]Oneliner to create a dictionary from two lists in Python
我想创建这本字典,但使用一个 liner 。
{'apple_last_6kg':'buy','mango_last_6kg':'buy','banana_last_6kg':'buy',
'apple_last_4kg':'buy','mango_last_4kg':'buy','banana_last_4kg':'buy',
'apple_last_3kg':'buy','mango_last_3kg':'buy','banana_last_3kg':'buy',
'apple_last_kg':'buy','mango_last_kg':'buy','banana_last_kg':'buy'}
这是我最初尝试并得到错误的方法,尽管{**{'a':1},**{'b':2}}
工作正常并给出{'a':1,'b':2}
,但在dictionary comprehension
中使用此公式会产生错误。:
dic2 = {**{i+'_last_'+time:'buy' for i in ['apple','mango','banana']} for time in ['kg','3kg','4kg','6kg']}
print(dic2)
File "<ipython-input-238-9332e6a46412>", line 29
dic2 = {**{i+'_last_'+time:'buy' for i in ['apple','mango','banana']} for time in ['kg','3kg','4kg','6kg']}
^
SyntaxError: dict unpacking cannot be used in dict comprehension
我像下面这样解决了这个问题,但我想有一个类似dictionay-comprehension
的解决方案。 有什么建议么?
# 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'}
import itertools; {f'{goods}_last_{amount}': 'buy' for goods, amount in itertools.product(['apple','mango','banana'], ['kg','3kg','4kg','6kg'])}
dict.fromkeys(
(i+'_last_'+j for j in ['6kg','4kg','3kg','kg'] for i in ['apple','mango','banana']),
"buy"
)
请 在此处查看此类方法。
这个:
dic2 = [{i+'_last_'+j:'buy' for i in ['apple','mango','banana']} for j in ['kg','3kg','4kg','6kg']]
可以通过以下方式返工以产生所需的字典:
newdic = {i+'_last_'+j:'buy' for i in ['apple','mango','banana'] for j in ['kg','3kg','4kg','6kg']}
print(newdic)
给 output:
{'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'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.