2016-11-06 99 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]