item是来自 MySQL 的所有元组y=[1 if (t['color']=='yellow') else -1 for t in item]输出:[-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ]像这个,我想做这个for t in item: if(t['color']=='yellow'): y=1 elif(t['color']=='blue'): y=2 else: y=3并将结果放入数组中y=[1 if (t['color']=='yellow') 2 elif (t['color']=='blue') else 3 for t in item]y=np.array(y)print(y)输出应该是这样的[ 1 2 3 1 3 2 1 3 1 2 3 2 1 ] 我该怎么做?
2 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
这是字典的一个很好的用例!
首先,定义一个将颜色名称映射到数字的字典
colordict = {'yellow': 1, 'blue': 2, 'default': 3}
然后,使用colordict.get()
检索正确的号码
y = [colordict.get(t['color'], colordict['default']) for t in item]
第二个参数是如果在 中找不到.get()
则返回的默认值。t['color']
colordict
使用字典可以轻松添加更多颜色。您能想象必须编写一百个嵌套if-elses
来支持一百种颜色吗?!
使用这个虚拟列表进行测试:
item = [ {'color': 'yellow', 'data': 0.5}, {'color': 'purple', 'data': 0.1}, {'color': 'blue', 'data': 0.2}, {'color': 'blue', 'data': 0.3}, {'color': 'red', 'data': 0.6} ]
我们得到输出
[1, 3, 2, 2, 3]
这正是我们所期望的。
如果您defaultdict
不想处理.get()
.
紫衣仙女
TA贡献1839条经验 获得超15个赞
y=[1 if (t['color']=='yellow') else 2 if (t['color']=='blue') else 3 for t in item]
添加回答
举报
0/150
提交
取消