2010-09-15 71 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