2010-09-15 68 views
0

我有一個字典,其中包含作爲每個鍵值的鍵和列表。 我必須遍歷每個鍵附加的列表值,並將其分爲兩個不同的列表,'0'和'1'(因爲'0'和'1'是列表中的值),同時計數爲'0' ,'1'和總數。請讓我知道我應該如何去做這件事。由於訪問和操作字典的值(以列表形式)

+0

你可以提供一些示例數據和你想要的輸出。這並不完全清楚你想要什麼。 – 2010-09-15 14:33:56

+0

鑑於:詞典= {K1:[0,1,1,0,1,0,0],K2:[1,1,1,0,0,1,1],K3:[0,0,0 ,1,1,1,0]} – Compuser7 2010-09-15 14:37:57

+0

我必須通過每個K1,K2和K3的值可能會使用一個for循環,並使用裏面的'如果'必須檢查其'1'或'0'然後把它們放在不同的列表中。 – Compuser7 2010-09-15 14:39:04

回答

0
#to loop through a dictionary 
total_0 = 0 
list_0 =[] 
total_1 = 0 
list_1 = [] 
somedict = {'key1':[1,1,1,0,1,0]} 
for key,value in somedict.items(): 
    # now loop through each list of your dict, since value keep your list 
    for item in value: 
     if item == 1: 
      total_1 += 1 
      list_1.append(item) 
     else : 
      total_0 += 1 
      list_0.append(item) 

那是一個例子,如果你詳細介紹一下,我會盡力幫助你更多(:

0

的問題是大量在指定的(應該是相互排斥的兩種不同的列表?如果一個密鑰有01這兩個列表,或者兩者都不是,則會發生什麼情況?但是,如果沒有互斥約束,則計數必須重複計數每個0或1(如果它重複出現),以及許多其他猜測關於你根本沒有提到的條件...:

def weird_op(d): 
    keysw0 = [] 
    keysw1 = [] 
    count0s = count1s = 0 
    for k, v in d.iteritems(): 
    n0 = v.count('0') 
    n1 = v.count('1') 
    if n0: keysw0.append(k) 
    if n1: keysw1.append(k) 
    count0s += n0 
    count1s += n1 
    return keysw0, keysw1, count0s, count1s 

我省略了「也總」部分你的要求,因爲對於其中一個,缺乏規格邊界就噩夢 - 總共什麼?!鑰匙,列表中的物品,天使們在針尖上跳舞......?!因爲你非常明確地提到列表中的項目是字符串(你的在它們周圍使用引號,這必須意味着字符串 - 正確...?)你打算如何「總計」它們?

如果你能澄清規格(特別是那個怪異的「總」一個!)毫無疑問,可以找到更好的方法,但這是我的思維讀取專利水晶球可以推動的邊界。順便說一句,作爲規範的一部分,一些輸入列表和預期結果的例子真的會有幫助。

+0

1)每個鍵肯定具有'1'和'0'。 – Compuser7 2010-09-15 14:50:50

+0

2)是的計數器預計會計算它遇到的'0'和'1'的數量 – Compuser7 2010-09-15 14:51:18

+0

3)雖然這些值是字符串,但我這裏的總數意味着'0'和'1'它已經遇到了 – Compuser7 2010-09-15 14:52:09