Python 字典更新序列元素#0的长度为3;使用元组更新时需要2

Python 字典更新序列元素#0的长度为3;使用元组更新时需要2,python,dictionary,Python,Dictionary,我有一本字典有问题,我想把它分成另外两本 dico={'GA1': {'main': 1, 'middle': 1, 'sub': 1}, 'GA2': {'main': 1, 'middle': 1, 'sub': 2}, 'GA3': {'main': 1, 'middle': 1, 'sub': 3}, 'GA4': {'main': 1, 'middle': 1, 'sub': 4}, 'GA5': {'main': 1, 'mid

我有一本字典有问题,我想把它分成另外两本

dico={'GA1': {'main': 1, 'middle': 1, 'sub': 1}, 
      'GA2': {'main': 1, 'middle': 1, 'sub': 2}, 
      'GA3': {'main': 1, 'middle': 1, 'sub': 3}, 
      'GA4': {'main': 1, 'middle': 1, 'sub': 4}, 
      'GA5': {'main': 1, 'middle': 1, 'sub': 5}, 
      'GA6': {'main': 1, 'middle': 1, 'sub': 6}, 
      'GA7': {'main': 1, 'middle': 1, 'sub': 7}, 
      'GA8': {'main': 1, 'middle': 1, 'sub': 8}, 
      'GA9': {'main': 1, 'middle': 1, 'sub': 9}, 
      'GA10': {'main': 1, 'middle': 1, 'sub': 10}}
我想把GA2和GA6到GA10放在字典d1中,把GA1和GA3到GA5放在字典d2中

当我把它转换成一个列表时,我最终得到了一个元组

list(dico.items())[0] 
它给出('GA1',{'main':1,'middle':1,'sub':1}) 当我想把它放到我的新字典里

d2 = {}
d2.update(list(dico.items())[0])
我以“builtins.ValueError:字典更新序列元素#0的长度为3;需要2”结束

字典是元组元素的无效格式吗

谢谢你的帮助

亚历山大你是说这个吗

d2.update([list(dico.items())[0]])
可以用元组列表初始化字典。您只提供了一个元组,而不是在列表中。使用
[]
初始化单例列表并传递:

{'GA10': {'middle': 1, 'main': 1, 'sub': 10}}

另外,执行
list(dico.items())
然后获取第0个元素也是浪费。如果可以,考虑改变你的方法来解决你的问题。 创建一个您想要的键列表,然后使用dict理解。下面的代码创建了一个字典d2,其中包含GA1、GA8和GA9键-值对

newkeys = ['GA1', 'GA8', 'GA9']

d2 = {k: dico[k] for k in set(newkeys) & set(dico.keys())}
有关更多信息,请参阅

d1 = { k:dico[k] for k in ['GA2','GA6','GA10'] }
print (d1)
输出:

{'GA2': {'main': 1, 'middle': 1, 'sub': 2}, 'GA6': {'main': 1, 'middle': 1, 'sub': 6}, 'GA10': {'main': 1, 'middle': 1, 'sub': 10}}

d2.update([(dico.items())[0]])
-gives
TypeError:“dict\u items”对象不支持索引
现在更好了非常感谢