你能教我从名单中构建一个词典吗?
我有两个清单:
A = [1, 2, 0, 0, 3]
和
B = ['HAM', 'SPAM', 'HAM', 'HAM', 'SPAM']
我想要一个这样的字典:
Dict = [
... {'Count': 1., 'Class': 'HAM'},
... {'Count': 2., 'Class': 'SPAM'},
... {'Count': 0., 'Class': 'HAM'},
... {'Count': 0., 'Class': 'HAM'},
... {'Count': 3., 'Class': 'SPAM'},
... ]
其中包括两个功能键“Count”和“Class”......
非常感谢!感谢。
答案 0 :(得分:2)
这不是一个词典,而是一个词典(词典)。无论如何,如果你想要的是这个:
data = [
{'Count': 1., 'Class': 'HAM'},
{'Count': 2., 'Class': 'SPAM'},
{'Count': 0., 'Class': 'HAM'},
{'Count': 0., 'Class': 'HAM'},
{'Count': 3., 'Class': 'SPAM'}
]
然后:
data = [{'Count': float(x[0]), 'Class': x[1]} for x in zip(A, B)]
<强>更新强>
我已经更新了我的答案,因为我刚注意到你需要一个浮动作为'计数'的值。
答案 1 :(得分:1)
>>> A = [1, 2, 0, 0, 3]
>>> B = ['HAM', 'SPAM', 'HAM', 'HAM', 'SPAM']
>>> zip(A,B)
[(1, 'HAM'), (2, 'SPAM'), (0, 'HAM'), (0, 'HAM'), (3, 'SPAM')]
>>> [{'Count':i[0], 'Class':i[1]} for i in zip(A,B)]
输出
[{'Count': 1, 'Class': 'HAM'},
{'Count': 2, 'Class': 'SPAM'},
{'Count': 0, 'Class': 'HAM'},
{'Count': 0, 'Class': 'HAM'},
{'Count': 3, 'Class': 'SPAM'}]
答案 2 :(得分:1)
你所拥有的Dict = [{}, {}, ...]
构造不是dict,而是一个dicts([]
)列表({}
)。
使用zip
和list comprehension获取所需结果:
>>> A = [1, 2, 0, 0, 3]
>>> B = ['HAM', 'SPAM', 'HAM', 'HAM', 'SPAM']
>>> [{'Count': a, 'Class': b} for a, b in zip(A, B)]
[{'Count': 1, 'Class': 'HAM'},
{'Count': 2, 'Class': 'SPAM'},
{'Count': 0, 'Class': 'HAM'},
{'Count': 0, 'Class': 'HAM'},
{'Count': 3, 'Class': 'SPAM'}]
答案 3 :(得分:1)
您可以使用pandas
。
pandas
非常适合代表此类数据。
df = pd.DataFrame({ 'Count': A, 'Class': B})
df
=>
Class Count
0 HAM 1
1 SPAM 2
2 HAM 0
3 HAM 0
4 SPAM 3
[5 rows x 2 columns]
df.Class
=>
0 HAM
1 SPAM
2 HAM
3 HAM
4 SPAM
Name: Class, dtype: object
df.Class[1]
=> 'SPAM'
df.ix[1]
=>
Class SPAM
Count 2
Name: 1, dtype: object
df.ix[1].Class
=> 'SPAM'