我试图在python3中构建一个为defaultdict分配键和值的函数,但在exec执行中失败了。假设我需要在defaultdict中传递几个str变量作为键和其他值:
定义dd:
dict=dd(lambda: dd(lambda: dd(lambda: dd(list))))
决定变量作为键:
keys_var = ['a', 'b', 'c', 'd']
将变量确定为值:
values_var = ['d', 'e', 'f', 'g' ]
排列键的值:
key_for_dict = []
for value in keys_var :
value_for_keys.append( '[' + str(value) + ']' )
string_insert_keys = ''.join(key_for_dict)
它看起来像:
[a][b][c][d]
排列插入值的值:
values_for_dict = []
for value in values_var:
values_for_dict.append(value)
string_for_values = ', '.join(values_for_dict)
string_insert_values = "[ " + string_for_values + " ]"
它看起来像:
[ d, e, f, g ]
现在定义一个函数,在循环中插入这些键和值(其中a,b,c,d等取不同的值,最后一个参数是所有这些d,e,f,g的连接)
我试过:
def riempie_dict_var( dizionario ) :
exec( dizionario + string_insert_keys + ".append('___'.join( " + string_insert_columns + "))" )
但它失败了:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'collections.defaultdict' and 'str'
如果您必须使用
exec()
,您应该能够:但是如果你提供更多的上下文,这里的人很可能会帮助你想出一个无exec的解决方案。你知道吗
编辑
我不确定我是否完全理解您的问题,但在我看来,您有一个递归数据结构,最好使用递归代码来处理:
输出
相关问题 更多 >
编程相关推荐