python中建立空字典,python创建空字典的两种方法
python-列表词典的直积
您试图编写一些代码来测试输入参数的笛卡儿积。
我看过itertools,但那个产品功能不是我想要的。每个词典都有任意数量的键和任意数量的元素,有生成具有以下数组的词典的简单方法吗?
输入:
options={ number : [ 1,2,3 ], color: [橙色,蓝色] }
打印列表(我的产品)选项)
输出示例:
[ { 数字:1,颜色:橙色 },
{ 数字:1,颜色:蓝色 },
{ 数字:2,颜色:橙色 },
{ 数字:2,颜色:蓝色 },
{ 数字:3,颜色:橙色 },
{ 数字:3,颜色:蓝色 }
]
四个解决方案
49电压
好的,谢谢@dfan告诉了我在错误的地方看。现在明白了:
来自国际热核聚变实验堆工具导入产品
defmy_product(InP):
返回(dict (zip (InP.keys),values)表示产品中的值(InP。价值观))
编辑:经过多年的计算机编程语言经验,我认为接受list(product_dict(**mydict))而不是输入词典是更好的解决方案。调用样式类似于原始夸尔斯。另外,我认为编写生成器函数而不是返回生成器表达式的函数会使代码更清晰。所以:
efproduct_dict(**Kwargs):
keys=kwargs.keys(
vals=kwargs.values(
对于instanceinitertools。产品(* vals):
yelddict(zip(keys,实例) )
如果需要传递词典list(product_dict ) **mydict)。使用参数而不是任何输入类的一个重大变化是防止对键/值进行至少Python 3.6的排序。
sethjohnsonanswered 2020-01-24t 02336044336036 z
17电压
考虑答案的Python 3版本。
导入工具
定义产品(字典) :
list(dict _ product(dict(number=[1,2 ],character=ab ))
[{character: a , number: 1}
{ 字符:一,数字:2},
{ 字符: b ,数字:1},
{character: b , number: 2}]
返回xinitertools的(dict (zip (dicts,x))。产品(字典。价值观))
塔拉施回答2020-01-24t 02336044336056 z
七电压
顺便说一下,这不是数组。数组是列表的排序。这是可以从列表中选择的枚举。
编辑:记住了叫笛卡尔乘积之后,我想到了这个:
导入工具
options={ number : [ 1,2,3 ], color: [橙色,蓝色] }
product=[ xforxinapply (ITER工具。产品,选项。值)]
打印[产品中p的dict(zip(options.keys),p)
dfan回答2020-01-24t 02336045336020 z
3电压
#我愿意做
密钥,值=选项。密钥,选项。值(
# butiamnoturethatthekeysandvaluesloualways
# bereturnedinthesamerelativeorder.com门茨?
keys=[]
值=[]
对于options.iteritems()中的k,v:
附加(k)。
values.append(v))。
导入工具
itemsinitertools的opts=[dict(zip(keys,items)]。产品)值
结果呢
opts=[
{ 颜色:橙色,数量:1},
{ 颜色:橙色,数量:2},
{ 颜色:橙色,数量:3},
{ 颜色:蓝色,数量:1},
{ 颜色:蓝色,数量:2},
{ 颜色:蓝色,数量:3}
]
hughbothwellanswered 2020-01-24t 02336045336040 z
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。