我有一个字典的问题,我想分成另外两个。
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中的GA10和字典d2中的GA1和GA3到GA5。
当我将其转换为列表时,我最终会得到类似的问题,
list(dico.items())[0]
给出了(' GA1',{'主':1,'中':1,' sub':1}) 当我想将其设置为我的新词典时,
d2 = {}
d2.update(list(dico.items())[0])
我最终得到" builtins.ValueError:字典更新序列元素#0的长度为3; 2是必需的"
字典是元组元素的无效格式吗?
感谢您的帮助
亚历山大
答案 0 :(得分:1)
你的意思是?
d2.update([list(dico.items())[0]])
您可以使用元组列表初始化字典。你只提供一个元组,而不是列表中的元组。使用[]
初始化单例列表并传递:
{'GA10': {'middle': 1, 'main': 1, 'sub': 10}}
此外,执行list(dico.items())
然后获取第0个元素是浪费的。如果可以,请考虑改变您的问题解决方法。
答案 1 :(得分:0)
创建所需的键列表,然后使用dict理解。下面的代码创建了一个字典d2,其中包含GA1,GA8和GA9,键值对。
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
String name = stackTrace[1].getClassName();
System.out.println(name);
答案 2 :(得分:0)
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}}