猿问

在python中合并字典给定索引的元素

我要用相同长度的字典。而且我有两个索引。我要做的是创建一个像这样的新字典:

  • 字典1中从0到index1的元素

  • 字典2中从index1到index2的元素

  • 从index2到字典1的长度的元素

我已经试过了:

L = len(dic1)

result = {}

ini  = random.randint(0,L-1)

end  = random.randint(inici+1,L)

i = 0

while i < ini:

    key = dic1.keys()[i]

    vaue = dic1.get(key)

    result[key] = value

    i += 1


while i < end:

    key = dic2.keys()[i]

    vaue = dic2.get(key)

    result[key] = value

    i += 1


while i < L:

    key = dic1.keys()[i]

    vaue = dic1.get(key)

    result[key] = value

    i += 1


return result

但是,当我执行几次迭代时,会出错,因为有时结果的长度与dic1和dic2的长度不同。你能帮我吗?


慕田峪7331174
浏览 183回答 2
2回答

拉莫斯之舞

您可以使用OrderedDictfromcollections来保持键的有序性,但是然后您必须根据需要调整键以使它们有序性,这并不美观。您还可以对dict进行子类化,以创建某种类型的元dict,该meta dict实现一个dict的所有方法,同时包含对这三个dict的引用,并返回该方法中这三个dict的列表的并置keys(),内容接近:class MetaDict(dict):&nbsp; &nbsp; def __init__(self, d1, d2, d3):&nbsp; &nbsp; &nbsp; &nbsp; self.d1 = d1&nbsp; &nbsp; &nbsp; &nbsp; self.d2 = d2&nbsp; &nbsp; &nbsp; &nbsp; self.d3 = d3&nbsp; &nbsp; def keys(self):&nbsp; &nbsp; &nbsp; &nbsp; return self.d1.keys() + self.d2.keys() + self.d3.keys()&nbsp; &nbsp; ...当然,你得子类__getitem__(),__setitem__(),__iter__(),iteritems()和所有其他人,使其像一个字典。然后,您必须在如何处理项目设置方面做出大胆的选择...当然,您可以避免dict()子类,而只需创建一个行为类似于dict的类,并仅定义您将要使用的方法即可。之后使用。

桃花长相依

字典没有长度,因为它们不是序列。因此,由字典本身定义的键范围没有自然定义。您可能会以某种方式对键进行排序。
随时随地看视频慕课网APP

相关分类

Python
我要回答