Python2.7.3:从列表中获取一个项,并将其作为字典中的键
我想从列表中提取项目,并将其放入词典中 假设我们有以下内容Python2.7.3:从列表中获取一个项,并将其作为字典中的键,python,dictionary,Python,Dictionary,我想从列表中提取项目,并将其放入词典中 假设我们有以下内容 carList = set(zip(carWordList, carWordFreq)) 注意:我使用set删除重复项 因此,carList将产生以下结果: set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4)
carList = set(zip(carWordList, carWordFreq))
注意:我使用set删除重复项
因此,carList将产生以下结果:
set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4), ('pretend', 1), ('beam', 4)])
for key in carList:
otherDic = [key]["Car"]
现在,我想把单词(例如“merry”)放到字典(newDic)中,用数字作为值
另外,我想用这个新字典创建另一个字典(otherDic),它有两个键(一个是单词(例如“merry”),另一个是“Car”,稍后会取一个值
for key in newDic:
otherDic = [key]["Car"]
我试着做到以下几点:
set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4), ('pretend', 1), ('beam', 4)])
for key in carList:
otherDic = [key]["Car"]
但是,我得到以下错误:
TypeError:列表索引必须是整数,而不是str您可以使用字典理解:
In [61]: l = set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4), ('pretend', 1), ('beam', 4)])
In [63]: d = {k:v for k,v in l}
In [64]: d
Out[64]:
{'593': 1,
'additionally': 4,
'asked': 22,
'beam': 4,
'bright': 4,
'completely': 21,
'cop': 25,
'fiddle': 1,
'jaw': 2,
'merry': 3,
'pretend': 1}
当你这么做的时候
otherDic = [key]["Car"]
您只需创建一个只包含键的列表[key]
,然后尝试使用“Car”
而不是整数对其进行索引,这就是出现错误的原因
其次,如果不创建newDic
,你就不能开始循环到这个中,我看你在任何时候都不会这样做
无论如何,这是解决问题的错误方法。要将您的集
转换为字典,您只需执行以下操作:
my_dict = {key: value for key, value in carList}
顺便说一句,这叫做词典理解。但正如@Adam Smith所指出的,这实际上相当于
my_dict = dict(carList)
这更简单…但在那之后,我不太明白你创建另一个每个值有两个键的dict是什么意思。你不能创建一个有两个键的dict,这不是它们的工作方式。你可以在这里对这个新dict的所需输出进行评论,我将编辑我的答案。你似乎不明白字典是如何工作的。字典可以没有两个键。为什么不更改zip
顺序,只使用dict(carList)
?请添加示例输入和最终所需的输出。抱歉,我指的是字典中的字典在谈论两个键时,我将尝试这些建议,谢谢