python词典中的重计数值

2024-04-19 06:41:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

result =[{'a': 5}, {'b': 4}, {'c': 3}, {'ar': 10}, {'ade': 10}]

现在我想重新说明一下这些词典的价值。例如,“a”是'ar'len(a)/len(ar)=1/2的子串,所以{'a':5}变成{'a':5+10/2}。 另外,“a”是“ade”的子串,len(a)/len(ade)=1/3。最后,它应该是{a':5+10/2+10/3}。那么不使用for方法如何解决这个问题呢?你知道吗

在上一步中,我发现我可以将此结果转换为字典,但仍然需要使用for方法。你知道吗


Tags: 方法forlen字典result词典单子ar
3条回答

预期输出不清楚('ar'与'ade'?),但我建议使用来自collectionsdefaultdict,如下所示:

from collections import defaultdict

result =[{'a': 5}, {'b': 4}, {'c': 3}, {'ar': 10}, {'ade': 10}]

res = defaultdict(list)

for h in result:
  key = list(h.keys())[0]
  val = list(h.values())[0]
  key_f = key[0]
  size = len(key)
  print(size)
  res[key_f].append(val/size)

此步骤产生:

defaultdict(<class 'list'>, {'a': [5.0, 5.0, 3.3333333333333335], 'b': [4.0], 'c': [3.0]})

然后迭代将值转换为列表的和:

for k, v in res.items():
  res[k] = sum(v)


print(dict(res))
#=> {'a': 13.333333333333334, 'b': 4.0, 'c': 3.0}
    result =[{'a': 5}, {'b': 4}, {'c': 3}, {'ar': 10}, {'ade': 10}]
    dd ={}
    v=0
    for i in result:
        key=i.keys()[0]
        if key.__contains__('a'):
            l=i[key]/len(key)
            v = v+l
    dd={'a':v}
    #dd ={'a': 13}
result =[{'a': 5}, {'b': 4}, {'c': 3}, {'ar': 10}, {'ade': 10}]

relation = []
valor = {}

for example in range(0, len(result)):
    for example2 in list(result[example].keys()):
        for examplex in range(0, len(result)):
            if examplex != example and example2[0] in list(result[examplex].keys())[0] and list(result[examplex].keys())[0] not in relation:
                #print('True')
                relation.append(list(result[examplex].keys())[0])
                print(list(result[examplex].keys())[0], list(result[examplex].values())[0])
                if example2[0] not in valor:
                    print("No existe, se crea como un valor nuevo.")
                    valor[example2[0]] = list(result[example].values())[0] + list(result[examplex].values())[0] / len(list(result[examplex].keys())[0])
                elif example2 in valor:
                    print("Existe, se esta modificando.")
                    valor[example2[0]] += list(result[examplex].values())[0] / len(list(result[examplex].keys())[0])

print(valor[example2[0]])

'''Here you can iterate with for :) valor, 1 hour for do it 0_0'''

相关问题 更多 >