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]])
-givesTypeError:“dict\u items”对象不支持索引
现在更好了非常感谢