我试图通过使用itertools.product
在多个集合上迭代来设置多个字典的默认值。当字典的键是元组时,这种方法很有效。所以每个value
来自itertools.product
,它是一个元组,可以用作dict_x.setfault(value,[])
。当字典的键是单个值时,问题就出现了
# example of problem
set_a = {1,2,3,4}
dict_y = {1:'blah',2:'blahblah'}
for key in itertools.product(set_a):
dict_y.setdefault(key,'hi')
print(dict_y)
# output: {1:'blah',2:'blahblah',(1,):'hi', (2,):'hi', (3,):'hi', (4,):'hi'}
因此,在dict_y中不应该使用键{1,2}设置为默认值。首选输出为{1:'blah',2:'blahblah',3:'hi', 4:'hi'}
我使用循环、查找、列表理解来迭代设置默认值所需的所有字典和集合。我没有set_a
或dict_y
的解释。因此,很难单独使用单值键处理案例(如避免使用itertools)。在setdefault for loop
中获得所需的key
是有帮助的,如果:
dict_y[1] == dict_y[(1)] != dict_y[(1,)]
开始解包和打包元组itertools.product
只有1个设置为输入参数时,防止获取元组
您的数据表示可能存在一些歧义。第一段 似乎建议首选的方法是使用带键的词典 基于元组
如果是这样,那么下面的代码如何:
您的示例似乎基于标量键。此代码将在这样的环境中工作 一个完全不需要
itertools.product
的案例:相关问题 更多 >
编程相关推荐