Python中如何从字典列表提取指定键的对应值?
实现从字典列表中提取指定键的取值列表
我需要编写一个函数,接收字典列表作为输入,返回列表中所有字典指定键对应的取值列表。示例调用是 titles = getKeys([book1, book2, book3])。目前我已经创建了3个字典并组成列表传入函数,知道要用for循环遍历列表,但不清楚具体实现逻辑——当前函数只能打印指定键(比如"Price")的值,现有代码如下:
book1 = { "Title": "ShowYourWork", "Price": 2.99, "Edition": "5th", "in_stock": False } book2 = { "Title": "HowToNotDieALone", "Price": 10.00, "Edition": "2nd", "in_stock": True } book3 = { "Title": "TheSecondBrain", "Price": 9.99, "Edition": "8th", "in_stock": False } books = [book1, book2, book3] def getKeys(books): for book in books: print(f"{book['Price']}")
要实现返回指定键的取值列表,需要做这几个调整:
- 给函数增加一个
key参数,让它可以灵活指定要提取的键(比如"Title"或"Price") - 初始化一个空列表,用来存储遍历过程中收集到的取值
- 遍历每个字典时,将对应键的值添加到列表中,最后返回这个列表
修改后的完整代码
book1 = { "Title": "ShowYourWork", "Price": 2.99, "Edition": "5th", "in_stock": False } book2 = { "Title": "HowToNotDieALone", "Price": 10.00, "Edition": "2nd", "in_stock": True } book3 = { "Title": "TheSecondBrain", "Price": 9.99, "Edition": "8th", "in_stock": False } books = [book1, book2, book3] def getKeys(books, key): result = [] for book in books: # 可选:如果担心部分字典没有目标键,可加判断避免报错 # if key in book: # result.append(book[key]) result.append(book[key]) return result # 示例调用:提取所有书名 titles = getKeys(books, "Title") print(titles) # 输出: ['ShowYourWork', 'HowToNotDieALone', 'TheSecondBrain'] # 提取所有价格 prices = getKeys(books, "Price") print(prices) # 输出: [2.99, 10.0, 9.99]
更简洁的列表推导式版本
如果不需要额外的错误判断,还可以用Python的列表推导式简化函数:
def getKeys(books, key): return [book[key] for book in books]
内容的提问来源于stack exchange,提问作者Ahmed ElAbbas
相关产品推荐
相关产品推荐

