我有一个python字典,它有3个嵌入层,如下所示(每层有许多键):
my_dict = {key1:{key2:{key3:some_value}}}
现在我想通过移动key3作为第一层来重建字典。所以字典看起来像:
^{pr2}$我知道用3个for循环来重建整个过程的愚蠢方法,比如
my_new_dict = {}
for key1 in my_dict.keys():
for key2 in my_dict[key1].keys():
for key3 in my_dict[key1][key2].keys():
### a bunch of code to check if the key already exists and
### to move values into the new dictionary from scratch
我想知道有没有更好的方法来做这件事。或者字典并不是表示这种数据结构的最好方法。那么,构建这些数据的更好方法是什么呢?我想重建,因为我想先按key3循环一些计算,但是如果不先用key1和key2循环,我就不能得到key3。在
好吧,它不必那么复杂,尤其是对于defaultdict
唯一的问题是,现在只剩下一堆defaultdict,它们有坏的
__repr__
其实不需要很复杂的代码。如果根据需要使用
dict.setdefault
来创建新的中间字典,那么本应复杂的部分将变成一行代码。我还建议迭代字典的items
,而不是用键索引它们:如果您使用的是python2,您可能希望使用
iteritems
,而不是items
,因为它不分配一个列表来保存所有值。在python3中,items
返回一个不需要太多内存的iterable“view”对象。在相关问题 更多 >
编程相关推荐