我有一个带有两个属性的python对象;第一个是键,第二个是项列表,如下所示
Class Temp:
def __init__(self,key,item_list):
self.key=key
self.item_list=item_list
我还有另一个来自数据库的对象列表。数据库查询产生的属性之一是“ item”。 “ item”值可以是对象中的item_list之一。 “项目”是唯一的。
ls=[]
ls.append(Temp('a',['1a','2q'])
ls.append(Temp('b',['3b','4m'])
来自数据库的数据
**id** | **name** | **item**
______________________
1 | test | 1a
2 | test2 | 2q
3 | test3 | 3b
4 | test6 | 4m
如果item列中的值与上述对象中“ item_list”中的值之一匹配,我想将来自数据库的对象添加到上述对象中。产生的结果应该看起来像
Temp ('a',['1a','2q'],List of rows (object) that matches column values of "item" #1st and 2nd rows of the table above)
Temp ('b',['3b','4m'],List of rows (object) that matches column values of "item" #3rd and 4th rows of the table above)
[感谢您的帮助
这可能与您期望的不完全相同,但是:
class Temp:
def __init__(self,key,item_list, temp = None):
self.key = key
self.item_list = item_list
self.temp = temp
def get(self):
return self.temp if [i for i in self.temp.item_list if i in self.item_list] else None
来自数据库的对象示例:
a = Temp('a', ['1a', '2q'])
b = Temp('b', ['3b', '4m'])
c = Temp('c', ['1f', '11'])
d = Temp('d', ['2g', '61'])
e = Temp('e', ['2y', '60'])
f = Temp('e', ['2g', '2q'])
如果项目在item_list上,则添加对象:
ls = []
ls.append(Temp('a', ['1a', '2q'], a).get())
ls.append(Temp('b', ['3b', '4m'], b).get())
ls.append(Temp('c', ['1a', '2q'], c).get())
ls.append(Temp('d', ['3b', '4m'], d).get())
ls.append(Temp('e', ['1a', '2q'], e).get())
ls.append(Temp('f', ['1a', '2q'], f).get())
输出:
ls
[<__main__.Temp at 0x7f5f52feffd0>,
<__main__.Temp at 0x7f5f52fef9e8>,
None,
None,
None,
<__main__.Temp at 0x7f5f52fe5390>]
删除“无”:
while None in ls: ls.remove(None)
输出:
item_list:
[x.item_list for x in ls]
[['1a', '2q'], ['3b', '4m'], ['2g', '2q']]
键:
[x.key for x in ls]
['a', 'b', 'e']