在for循环中的值之后查找字典列表

时间:2017-11-18 15:11:16

标签: python dictionary search

我看过解决方案,但在这种情况下,在第一个结果之后搜索停止了。我如何实现,搜索获取列表中包含搜索值的所有词典?

search_value = input()
match = next((l for l in cleaned_list if l['Name'] == search_value), None)
print(match)

这不适用于以下方法:

search_value = input()
match = next((l for l in cleaned_list if l['Schluesse'] == search_value), None)
for match in cleaned_list:
   print(match)

cleaned_list中的数据:

{'Versuche - Anteil in %': '11.8', 'erfasste Faelle': '17', 'Nichtdeutsche Tatverdaechtige - Anzahl': '4', 'Tatverdaechtige insgesamt': '9', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '44.4', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '0', 'Gemeindeschluessel': '9277', 'Kreisart': 'LK', 'HZ nach Zensus': '14', 'Versuche - Anzahl': '2', 'Schluesse': '980100', 'Aufklaerungsquote': '52.9', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Rottal-Inn', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '9', 'Tatverdaechtige - maennlich': '9'}
{'Versuche - Anteil in %': '22.2', 'erfasste Faelle': '9', 'Nichtdeutsche Tatverdaechtige - Anzahl': '2', 'Tatverdaechtige insgesamt': '4', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '50.0', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '1', 'Gemeindeschluessel': '9278', 'Kreisart': 'LK', 'HZ nach Zensus': '9', 'Versuche - Anzahl': '2', 'Schluesse': '980100', 'Aufklaerungsquote': '44.4', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Straubing-Bogen', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '4', 'Tatverdaechtige - maennlich': '3'}
{'Versuche - Anteil in %': '17.6', 'erfasste Faelle': '17', 'Nichtdeutsche Tatverdaechtige - Anzahl': '6', 'Tatverdaechtige insgesamt': '14', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '42.9', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '1', 'Gemeindeschluessel': '9279', 'Kreisart': 'LK', 'HZ nach Zensus': '18', 'Versuche - Anzahl': '3', 'Schluesse': '980100', 'Aufklaerungsquote': '70.6', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Dingolfing-Landau', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '12', 'Tatverdaechtige - maennlich': '13'}
{'Versuche - Anteil in %': '0.0', 'erfasste Faelle': '4', 'Nichtdeutsche Tatverdaechtige - Anzahl': '1', 'Tatverdaechtige insgesamt': '5', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '20.0', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '1', 'Gemeindeschluessel': '9361', 'Kreisart': 'KfS', 'HZ nach Zensus': '10', 'Versuche - Anzahl': '0', 'Schluesse': '980100', 'Aufklaerungsquote': '100.0', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Amberg', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '4', 'Tatverdaechtige - maennlich': '4'}
{'Versuche - Anteil in %': '4.4', 'erfasste Faelle': '45', 'Nichtdeutsche Tatverdaechtige - Anzahl': '9', 'Tatverdaechtige insgesamt': '21', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '42.9', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '7', 'Gemeindeschluessel': '9362', 'Kreisart': 'KfS', 'HZ nach Zensus': '32', 'Versuche - Anzahl': '2', 'Schluesse': '980100', 'Aufklaerungsquote': '62.2', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Regensburg', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '28', 'Tatverdaechtige - maennlich': '14'}
{'Versuche - Anteil in %': '0.0', 'erfasste Faelle': '8', 'Nichtdeutsche Tatverdaechtige - Anzahl': '0', 'Tatverdaechtige insgesamt': '4', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '0.0', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '1', 'Gemeindeschluessel': '9363', 'Kreisart': 'KfS', 'HZ nach Zensus': '19', 'Versuche - Anzahl': '0', 'Schluesse': '980100', 'Aufklaerungsquote': '50.0', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Weiden i.d.OPf.', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '4', 'Tatverdaechtige - maennlich': '3'}
{'Versuche - Anteil in %': '4.5', 'erfasste Faelle': '44', 'Nichtdeutsche Tatverdaechtige - Anzahl': '5', 'Tatverdaechtige insgesamt': '37', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '13.5', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '4', 'Gemeindeschluessel': '9371', 'Kreisart': 'LK', 'HZ nach Zensus': '43', 'Versuche - Anzahl': '2', 'Schluesse': '980100', 'Aufklaerungsquote': '79.5', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Amberg-Sulzbach', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '35', 'Tatverdaechtige - maennlich': '33'}
{'Versuche - Anteil in %': '0.0', 'erfasste Faelle': '48', 'Nichtdeutsche Tatverdaechtige - Anzahl': '33', 'Tatverdaechtige insgesamt': '45', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '73.3', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '3', 'Gemeindeschluessel': '9372', 'Kreisart': 'LK', 'HZ nach Zensus': '38', 'Versuche - Anzahl': '0', 'Schluesse': '980100', 'Aufklaerungsquote': '93.8', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Cham', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '45', 'Tatverdaechtige - maennlich': '42'}
{'Versuche - Anteil in %': '1.6', 'erfasste Faelle': '64', 'Nichtdeutsche Tatverdaechtige - Anzahl': '31', 'Tatverdaechtige insgesamt': '36', 'Nichtdeutsche Tatverdaechtige - Anteil in %': '86.1', 'mit Schusswaffe gedroht': '0', 'Tatverdaechtige - weiblich': '1', 'Gemeindeschluessel': '9373', 'Kreisart': 'LK', 'HZ nach Zensus': '50', 'Versuche - Anzahl': '1', 'Schluesse': '980100', 'Aufklaerungsquote': '93.8', 'Straftat': 'IuK-Kriminalität im engeren Sinne (SZ: 517500, 517900, 543000, 674200, 678000)', 'Stadt-/Landkreis': 'Neumarkt i.d.OPf.', 'mit Schusswaffe geschossen': '0', 'aufgeklaerte Faelle': '60', 'Tatverdaechtige - maennlich': '35'}

我现在如何在980100中找到Schluesse的行(他们的其他行包含Schluesse中的其他值

4 个答案:

答案 0 :(得分:2)

理解而不是db.data.aggregate( {$unwind: '$tags_data'}, {$group: {_id: '$tags_data', sum: {$sum: +1}} }, {$sort: {sum: -1}} ); 调用(只能让你获得第一场比赛)将会:

next

答案 1 :(得分:0)

filter(lambda d: d.get('Name') == search_value, cleaned_list)

将帮助您生成与cleaned_list相同的序列类型,并忽略不具有Name的元素。

答案 2 :(得分:0)

你可以试试这个:

final_data = [i for i in cleaned_list if i["Schluesse"] == '980100']

答案 3 :(得分:0)

如果您经常需要此操作,则可能需要先扫描所有列表并按'Schluessel'分组:

by_schluessel = {}
for l in cleaned_list:
    by_schluessel.setdefault(l['Schluesse'], []).append(l)

print(len(by_schluessel.get('980100', [])))
# 9
print(len(by_schluessel.get('980101', [])))
# 0

by_schluessel是一个dict,其中Schluesse为关键字,原始字母列表为值。 分组完成后,此查询将非常快。

顺便说一句,数据库或大熊猫DataFrame可能更适合这类任务。