csv 在字典列表中搜索特定值

hrysbysz  于 2023-01-03  发布在  其他
关注(0)|答案(3)|浏览(108)

我需要能够打印字典列表中某个名字的所有示例。我似乎无法以所需的格式打印它们。当名字是小写而名字是大写时,它也不起作用。

def findContactsByName(name):
    return [element for element in contacts if element['name'] == name]
       
def displayContactsByName(name):
    print(findContactsByName(name))
if inp == 3:
        print("Item 3 was selected: Find contact")
        name = input("Enter name of contact to find: ")
        displayContactsByName(name)

在输出中输入名称"Joe"时为:

[{'name': 'Joe', 'surname': ' Miceli', 'DOB': ' 25/06/2002', 'mobileNo': ' 79444425', 'locality': ' Zabbar'}, {'name': 'Joe', 'surname': 'Bruh', 'DOB': '12/12/2131', 'mobileNo': '77777777', 'locality': 'gozo'}]

当名字"乔":

[]

预期输出:

name :  Joe
surname :   Miceli
DOB :   25/06/2002
mobileNo :   79444425
locality :   Zabbar 

name :  Joe
surname :   Bruh
DOB :   12/12/2131
mobileNo :   77777777
locality :   gozo
b1payxdu

b1payxdu1#

将第一个函数更改为:

def findContactsByName(name):
    return [element for element in contacts if element['name'].lower() == name.lower()]

为了说明大小写的差异,我只在比较部分将字典中的名称和输入的名称转换为小写。
为了能够以您指定的格式打印它,您可以为相同的创建一个函数,如下所示:

def printResult(result):
    for d in result:
        print(f"name: {d['name']}")
        print(f"surname: {d['surname']}")
        print(f"DOB: {d['DOB']}")
        print(f"mobileNo: {d['mobileNo']}")
        print(f"locality: {d['locality']}")
        print()

result=findContactsByName("joe")
printResult(result)
stszievb

stszievb2#

我修改了你的程序。现在你不必担心大小写和输出格式了。

contacts = [{'name': 'Joe', 
  'surname': ' Miceli', 'DOB': ' 25/06/2002', 'mobileNo': ' 79444425', 'locality': ' Zabbar'}, 
 {'name': 'Joe', 'surname': 'Bruh', 'DOB': '12/12/2131', 'mobileNo': '77777777', 'locality': 'gozo'}]

def findContactsByName(name):
    return [element for element in contacts if element['name'].lower() == name.lower()]
       
def displayContactsByName(name):
    for i in range(len(findContactsByName(name))):
        for j in contacts[i]:
            print('{}: {}'.format(j, contacts[i][j]))
        print('\n')
    
displayContactsByName('Joe')
xdyibdwo

xdyibdwo3#

大小写问题可以通过将比较的每一侧设置为大写或小写来解决。
第一个月
对于print语句的格式,可以使用json模块:

import json

print(json.dumps( findContactsByName(name), sort_keys=True, indent=4))

相关问题