从python中的字典创建子字典

从python中的字典创建子字典,python,dictionary,Python,Dictionary,函数criarB返回: {269476: 200129, 209624: 200129 ...} 200129 position in aux2, '200129 and 209624 are keys' 如果键%10=0必须存储在列表[0]中,如何根据键拆分dict list = [[], [], ...] 课程完成: class Buckets: def __init__(self, keys, palavras, tamanhoP): self.listaBuckts =

函数criarB返回:

{269476: 200129, 209624: 200129 ...}
 200129 position in aux2, '200129 and 209624 are keys'
如果键%10=0必须存储在列表[0]中,如何根据键拆分dict

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.listaBuckts

def 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.bucket dict的键并根据函数划分dict

尝试:

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.listaBuckts

def indexar(self):
    test = [[] for _ in range(10)]

    for x in self.listaBuckts:
        i = x % 10
        test[i].append([x, dict[x]])
    return test[0]

如果要根据键将字典拆分为两个列表。我认为下面的方法行得通

dict#从函数crairB返回的字典
a=[]#保存键%10的键和值的列表==0
b=[]#键%10的列表=0
对于dict中的x:
如果x%10==0:
a、 追加([x,dict[x]])#我在这里保存了列表中的键和值,您可以根据需要进行编辑。
其他:
b、 追加([x,dict[x]]))
编辑:

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

list=[]表示范围内的uu10]
对于dict中的x:
i=x%10
列表[i]。追加([x,dict[x]])

您可以使用列表理解:

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})

这里的“列表[0]”是什么意思?编辑问题以显示您尝试的内容、其输出或错误消息以及预期的输出。我在这里没有看到类或任何正在运行的代码。请发布一个适当的可运行代码编辑问题(1)您不应该使用标准库的名称(如“dict”)作为变量名。(2) 您的最后一行将“dict”定义为一组空字典,这没有意义。“dict{0}”在语法上是不正确的,也没有意义。我引用了dict为什么我觉得它更容易理解,但它实际上是一个列表,我对这个方法提出了质疑,我相信它更容易理解变量“d”是什么?这是字典dict。我的错误。编辑。没错,但是你能把答案改成我在问题中编辑的最后一段代码吗?def indexar变量“k”是什么?10?是的,现在是10。列表是否给出了所需的答案?完美答案,但如果我想将子列表分成相等的部分,该怎么办?示例:listOfDict[0]={{x,y,z},{w,a,t},{e}鉴于您在评论中的示例,不确定您所说的相等切片是什么意思。你的意思是每个插槽中的字典大小相等吗?如果是这样,您将如何计算哪个插槽将包含给定的密钥?也许这应该是另一个问题的主题。YesI创造了一个新的问题,