为了账号安全,请及时绑定邮箱和手机立即绑定

从python中的字典创建子字典

从python中的字典创建子字典

烙印99 2022-10-25 10:43:25
函数 criarB 返回:{269476: 200129, 209624: 200129 ...} 200129 position in aux2, '200129 and 209624 are keys'如何根据键拆分dict,如果keys % 10 = 0 必须存储在list[0]中list = [[], [], ...]类完成:class Buckets:def __init__(self, keys, palavras, tamanhoP):    self.listaBuckts = dict()    self.listaHash = list()    self.keys = list(keys)    aux = list(zip(keys, palavras))    self.aux2 = list()    for i in range(0, len(aux), tamanhoP):        self.aux2.append(dict(aux[i:i + tamanhoP]))def criarB(self):    for i, pag in enumerate(self.aux2):        for v in pag.keys():            self.listaBuckts[v] = i    return self.listaBucktsdef indexar(self):    count = 0    buckets = [[] for _ in range(10)]    for r in range(0, len(buckets)):        for s in range(0, len(self.listaBuckts)):            if s % 3 == 0:                buckets[r].append([v + count for v in self.listaHash[s:s + 3]])        count += 1    return buckets[0]“索引”功能使用一个只包含索引的列表,如何使用 self.buckets 字典的键并根据功能划分字典试图:class Buckets:def __init__(self, keys, palavras, tamanhoP):    self.listaBuckts = dict()    self.listaHash = list()    self.keys = list(keys)    aux = list(zip(keys, palavras))    self.aux2 = list()    for i in range(0, len(aux), tamanhoP):        self.aux2.append(dict(aux[i:i + tamanhoP]))def criarB(self):    for i, pag in enumerate(self.aux2):        for v in pag.keys():            self.listaBuckts[v] = i    return self.listaBucktsdef indexar(self):    test = [[] for _ in range(10)]    for x in self.listaBuckts:        i = x % 10        test[i].append([x, dict[x]])    return test[0]
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

您可以使用列表理解:


listOfDicts = [{k:v for k,v in dictionary.items() if k%10==i} for i in range(10)]

或循环:


listOfDicts = [ dict() for _ in range(10) ]

for key,value in dictionary.items():

    listOfDicts[key%10].update({key:value})


查看完整回答
反对 回复 2022-10-25
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

如果要根据键将字典拆分为两个列表。我认为以下可以工作


dict #The dictionary returned from function crairB

a = [] #List to save keys and values for key%10==0

b = [] #List for key%10!=0

for x in dict:

    if x%10==0:

        a.append([x,dict[x]]) #Here I have saved both keys and values in the list, you can edit according to your need.

    else:

        b.append([x,dict[x]])

编辑:


如果您必须将数据拆分为行等于键 % 10 的二维列表,那么我认为以下方法可以工作。


list = [[] for _ in range(10)]


for x in dict:

    i = x%10

    list[i].append([x,dict[x]])


查看完整回答
反对 回复 2022-10-25
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信