访问和操作字典的值(列表形式)

0 投票
2 回答
1265 浏览
提问于 2025-04-16 04:10

我有一个字典,每个键都有一个列表作为值。现在我需要遍历每个键对应的列表,把里面的'0'和'1'分成两个不同的列表。同时,我还需要统计'0'和'1'的数量,以及总的数量。请告诉我该怎么做。谢谢!

2 个回答

0

这个问题描述得不够清楚(这两个不同的列表是不是应该互不重叠?如果一个键的列表里同时有 01,或者都没有,会发生什么?等等)。不过,如果比如说没有互不重叠的限制,那么每个 01 如果出现多次,就得重复计算,另外还有很多你根本没提到的条件的猜测……:

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)

这是一个例子,如果你详细解释一下,我会尽量帮你更多(:

撰写回答