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:列表索引超出范围',这意味着没有结果没有结果。