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

2024-10-01 15:36:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把另一本字典分成两个。在

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放在字典d1中,GA1和GA3到GA5放在字典d2中。在

当我把它变成一个元组的时候

^{pr2}$

它给出('GA1',{'main':1,'middle':1,'sub':1}) 当我想把这个写进我的新字典时

d2 = {}
d2.update(list(dico.items())[0])

我的结局是“builtins.value错误:字典更新序列元素0的长度为3;需要2“

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

谢谢你的帮助

亚历山德拉


Tags: 元素middle字典maindicod2元组ga4
3条回答

创建一个你想要的键的列表,然后使用dict理解。下面的代码创建了一个字典d2,其中包括GA1、GA8和GA9,键值对。在

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

d2 = {k: dico[k] for k in set(newkeys) & set(dico.keys())}

有关详细信息,请参见Filter dict to contain only certain keys?

你是这个意思吗?在

d2.update([list(dico.items())[0]])

你可以用元组列表初始化字典。您只提供了一个元组,而不是在列表中。使用[]初始化单例列表并传递:

^{pr2}$

另外,执行list(dico.items())然后获取第0个元素也是浪费。如果可以,考虑改变解决问题的方法。在

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

输出:

^{pr2}$

相关问题 更多 >

    热门问题