访问和操作字典的值(列表形式)
我有一个字典,每个键都有一个列表作为值。现在我需要遍历每个键对应的列表,把里面的'0'和'1'分成两个不同的列表。同时,我还需要统计'0'和'1'的数量,以及总的数量。请告诉我该怎么做。谢谢!
2 个回答
0
这个问题描述得不够清楚(这两个不同的列表是不是应该互不重叠?如果一个键的列表里同时有 0
和 1
,或者都没有,会发生什么?等等)。不过,如果比如说没有互不重叠的限制,那么每个 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
#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)
这是一个例子,如果你详细解释一下,我会尽量帮你更多(: