Python 如何使用不同的参数形成字典?

Python 如何使用不同的参数形成字典?,python,list,class,dictionary,set,Python,List,Class,Dictionary,Set,我有一个带有class参数的类测试 参数={'first':[1,2,3,4],'second':[5,6,7]}。我想把它转换成一个字典,这样它将是“{'Test':'first':1'second':5}” 我尝试的是: di={} di=dict(itertools.izip(名称,VAL)) 在这里,我得到变量名中的Test,即classnane,即name=Test和 vals={'first':[1,2,3,4],'second':[5,6,7]} 虽然我希望它是“{'Test':

我有一个带有class参数的
类测试

参数={'first':[1,2,3,4],'second':[5,6,7]}
。我想把它转换成一个字典,这样它将是
“{'Test':'first':1'second':5}”

我尝试的是:

di={}
di=dict(itertools.izip(名称,VAL))

在这里,我得到变量名中的Test,即classnane,即
name=Test

vals={'first':[1,2,3,4],'second':[5,6,7]}
虽然我希望它是
“{'Test':'first':1'second':5}”
,但这不应该打印
“{'Test':'first':[1,2,3,4]“second':[5,6,7]}”
??相反,我在打印
di
时得到的是
{'Test':'first'}
。我的逻辑不会出错。

使用:


如果您使用的是Python 2,则可以使用构造函数:

subjects =  ['Physics', 'Chemistry', 'Maths']
dict(((subject, {}) for subject  in subjects))
如果您使用的是Python 3,则可以使用:


这是一个基本的for循环。Itertools对于这类东西来说非常复杂

>>> l = ['Physics', 'Chemistry', 'Maths']
>>> d = {}
>>> for i in l:
    d[i] ={}


>>> d
{'Chemistry': {}, 'Physics': {}, 'Maths': {}}

尝试使用听写理解:

输入:

{x: {} for x in ['Physics', 'Chemistry', 'Maths']}
输出:

{'Maths': {}, 'Chemistry': {}, 'Physics': {}}

看起来OP希望项目是空的dicts——如果OP真的想要一个空字符串,那么
dict.fromkeys
是一个很好的选择。c、 是的,我意识到了这个事实。dict comprehension是@mgilson这个问题的解决方案。这个问题给出了TypeError:unhabable类型:“list”您使用的是Python 2还是Python 3?2.7.7。我用{subject:{}作为主语在主语中}试过了,即使是dict(((subject,{})作为主语在主语中))仍然是同样的错误,应该可以用。我认为这个错误是指别的东西。也许你的主题列表中有嵌套列表?不,不是嵌套列表。嘿,我试过了,开始工作了,但我有一个问题,为什么它的顺序不同?而不是{{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}为什么我们有{},{},{},{},{},{??我需要做什么才能把它按正确的顺序排列呢?在python中,dict没有排序。如果您真的需要检查dict sorted,只需使用
键输入sorted(d):
。另外,这只是一个简单的for循环,其他答案更有效、更快,而且通常更好。
{x: {} for x in ['Physics', 'Chemistry', 'Maths']}
{'Maths': {}, 'Chemistry': {}, 'Physics': {}}