2016-11-06 244 views
3

我有一本字典,并希望将其分割成更小的词典,例如用于:分离字典分成更小的字典

dic = {1:(2,6), 3:(4,5)} 

我要循环,并有第一次迭代“当前”词典current = {1:2, 3:4},和用于第二次迭代的当前{1:6, 3:5}。下面是我试过(和不工作):

dic = {1:(2,6), 3:(4,5)} 

for i in range (0,1): 
    for key in dic: 
     current = {} 
     current[key] = dic[key][i] 
    print (current) 

这个输出{3:4}{3:5},它跳过键“1”出于某种原因。我该如何解决?

另外,假设每个键的数值都相等,我该如何找到键值的数量?例如对于{2:[3,4,5,7], 3:[1,0,3,1]}这将是4

回答

4

您在每次迭代覆盖current,迭代之前定义它,range(0, 1)遍历[0]只有:

dic = {1:(2,6), 3:(4,5)} 

for i in range(2): 
    current = {} 
    for key in dic: 
     current[key] = dic[key][i] 
    print(current) 
+0

啊我明白了,我的一个愚蠢的错误 – user3037568

+1

不用担心@ user3037568现在你知道你的错误,你可以确保你不会再这样做:) –

3

或者,您可以创建新的字典,迭代通过原字典的按键并创建相应的字典:

dic = {1:(2,6), 3:(4,5)} 
d1, d2 = {}, {} 
for key, v in dic.items(): 
    d1[key], d2[key] = v 
print(d1, d2) 

打印出:

{1: 2, 3: 4} {1: 6, 3: 5} 

d1[key], d2[key] = v简单地将v的值相应地解包为d1[key]d2[key]