我有一点创造性的问题。我想不出一个优雅而可取的短小的方法来写这个。你知道吗
我有4个列表,其中3个有1个元素,第4个可能有更多(也可能是一个)。你知道吗
我需要一个脚本,将这4个列表转换为一系列特定的格式化字典。我将举几个例子来说明我想做什么
例如:
W=['spaghetti']
X=['banana']
Y=['tomato']
Z=['lemonade', 'milk']
我需要这个:
dict1 = {'fruit':'banana' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'lemonade'}
dict2 = {'fruit':'banana' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'milk'}
但也可以是3个或更多元素:
W=['spaghetti']
X=['banana']
Y=['tomato']
Z=['lemonade', 'milk', 'water']
对于这些,结果应该是:
dict1 = {'fruit':'banana' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'lemonade'}
dict2 = {'fruit':'banana' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'milk'}
dict3 = {'fruit':'banana' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'water'}
此外,Z以外的另一个列表可以是多个元素列表:
W=['spaghetti']
X=['banana', 'apple']
Y=['tomato']
Z=['lemonade']
在这种情况下,我需要:
dict1 = {'fruit':'banana' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'lemonade'}
dict2 = {'fruit':'apple' , 'food':'spaghetti' , 'vegetable':'tomato' , 'drink':'lemonade'}
所以基本上:
一般来说,您将获取列表的Cartesian product,并根据每个结果生成一个字典。因为你不知道提前会有多少个结果,你不能只分配给
dict1
,dict2
等(此外,从你使用的名字来看,这显然是一个愚蠢的想法)。毕竟,你没有写Z1 = 'lemonade'
;Z2 = 'milk'
等等。仔细想想为什么不写。)相反,我们将对这些结果进行list
。你知道吗所以我们想要一个
list
由(一些dict
组成,可以用tuple
来表示),对于每个tuple
,我们通过笛卡尔积得到。幸运的是,“taking the Cartesian product”内置于标准库中,它允许我们编写一个表达式(不包括import;),它的意思正好是它所说的(本段的第一句话):这种方法允许任何源列表包含多个元素(或不包含元素;),而无需进行必要的修改。你知道吗
相关问题 更多 >
编程相关推荐