gpt4 book ai didi

python - 从列表和字典中给定值创建字典

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:30 25 4
gpt4 key购买 nike

所以,我得到了一个列表

a =[[[0, 0, 3, 3, 3, 3], [0, 0, 1, 3, 3, 3, 3]], [[0, 1]], [[2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3]], [[0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3]]]

和一本字典d。

d = {0:2,1:1,2:3,3:4}

对于输出,我想要一本字典:

output = {0:[0,3],1;[1],2:[2,3],3:[0,2]}

此输出是通过遍历 a 的每个子列表并检查每个元素在 d 中出现的次数来形成的。让我们看看 a 的索引 0。现在我们看一下[0][0]和
a[0][1] 中,由于 0 在两者中都出现了两次,并且 3 出现了 4 次(与 d 相比),因此将 [0,3] 添加到索引 0。类似地,在索引 1 处,0 仅出现一次,而不是添加到字典的索引 1 处。

到目前为止我尝试过的:

def example(a,d):
for i in range(len(a)):
count = 0
for j in range(len(a[i])):
if j in (a[i][j]):
count+=1
if count == d[i]:
print(i,j)

最佳答案

编辑:有效的版本

from collections import Counter
a = [[[0, 0, 3, 3, 3, 3], [0, 0, 1, 3, 3, 3, 3]], [[0, 1]],
[[2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3], [2, 2, 2, 3, 3, 3, 3]],
[[0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3], [0, 0, 2, 2, 2, 3, 3, 3, 3]]]
d = {0: 2, 1: 1, 2: 3, 3: 4}
output = {i: [] for i in range(len(a))}
for j, sublist in enumerate(a):
counts = [Counter(i) for i in sublist]
for k,v in d.items():
try:
if all(counts[i][k] == v for i in range(len(counts))):
output[j].append(k)
except: continue
print(output)

输出:

{0: [0, 3], 1: [1], 2: [2, 3], 3: [0, 2]}

try except block 只是为了方便,如果你坚持的话,你可以通过检查某个键是否在所有计数器中来解决这个问题(这是添加它的要求)

关于python - 从列表和字典中给定值创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com