Python过滤器元素包含相同的参数
我有三张单子Python过滤器元素包含相同的参数,python,Python,我有三张单子 renting=[{'id':'92061083359','lp':'1','title':'title 1'},{'id':'94103033254','lp':'2','title':'title 3'},{'id':'93022138167','lp':'4','title':'TITLE2'},{'id','93022138167 lp 4','title':'TITLE2'} students=[{'lastname':'BAJOREK','id':'9205104875
renting=[{'id':'92061083359','lp':'1','title':'title 1'},{'id':'94103033254','lp':'2','title':'title 3'},{'id':'93022138167','lp':'4','title':'TITLE2'},{'id','93022138167 lp 4','title':'TITLE2'}
students=[{'lastname':'BAJOREK','id':'92051048757','name':'JAKUB'},{'lastname':'SLOTARZ','id':'92051861424','name':'MARIANNA'},{'lastname':'WNUK','id':'92052033215','name':'SZYMON'},{'lastname':'LESKO','id':'92052877491','name':'wojiech'}
rooms=[{'id_-room':'8','id':'92061083359'},{'id_-room':'32','id':'94103033254'},{'id_-room':'47','id':'93022138167'},{'id_-room':'47','id':'92071176944'}
我想过滤这条记录,只显示房间(id_room)中相同的书名
输出
47号房间有两本复制书(同一书名)
我写了一些代码,但效果不好
house_ids = set(report_dict['id'] for report_dict in report_student)
the_same = []
count = 0
# zliczanie tytulow ktore sa wyporzyczone kilka razy
for b in renting:
count = 0
stu = []
for r in renting:
if b.get('id') == r.get('title'):
count += 1
if count > 1:
stu.append(r.get('id'))
the_same.append(stu)
pesel_by_id = []
# sprawdzanie nr pesel w odniesieniu do mieszkania
for l in the_same:
for pesel in l:
tmp = []
for mel in house_ids:
if mel == pesel:
tmp.append(mel)
pesel_by_id.append(tmp)
count = 0
for x in pesel_by_id:
for y in x:
count += 1
您可以使用内置在Python中的
过滤器
:
def search(id_room):
book_id = filter(lambda a: a['id_room'] == id_room, rooms)[0]['id']
title = filter(lambda a: a['id'] == book_id, renting)[0]['title']
return len(filter(lambda a: a['title'] == title, renting))
print (search('47'))
好的,但是如何计算每个房间的重复数呢?我更新了代码,现在应该可以了。如果您可以标记为解决方案,这将非常有用。我将
a['title']
更改为a.get('title')
,因为解释器调用keyrerror:'title'。我从file.neli读取数据,这是另一个问题。当我把相同的数据放在列表函数show 1的最后位置时。例如,renting=[{'id':'9206863855','lp':'1','title':'WSTEP DO INFORMATYKI'},{'id':'93013078979','lp':'2','title':'W SIECI KOMPUTEROWEJ'},{'id':'93091115319','lp 3','title':'mikrokontroleri AVR'},{'id':'93112747286','lp':'4','title':'AUTOCAD DOBRE PRAKTYKI'},{'id':'94030283737','lp':'4','title':'AUTOMATYKA II'},{'id':'96081771827','lp':'4','title':'AUTOMATYKA II'}]
您得到的是'indexer:列表索引超出范围',这意味着没有结果没有结果。