仅从嵌套在列表内的字典中检索某些键和值

时间:2020-04-12 00:43:32

标签: python

我已经坚持了几个小时。.我只想从嵌套在列表中的字典中检索一个单独的键和值。

GAMERS = [{
        'name': 'Fatboi',
        'parent': 'Dick Van Dyke',
        'game': 'Dark Souls 3',
        'weight': '420 lbs'
    },
    {
        'name': 'Justin',
        'parent': 'Heather Blueberry',
        'game': 'Tetris',
        'weight': '180 lbs'
    },
{
        'name': 'jerkhead',
        'parent': 'none',
        'games': 'Hello Kitty',
        'weight': '240 lbs'
    },{
        'name': 'Tumor',
        'parent': 'Jack Black',
        'games': 'Trying to live',
        'weight': '150 lbs'
    }]

例如,我只想打印贾斯汀的信息,其他人则不要。有见识吗?

2 个答案:

答案 0 :(得分:1)

您可以传递所需的密钥并将其推入单独的列表。

GAMERS = [{
        'name': 'Fatboi',
        'parent': 'Dick Van Dyke',
        'game': 'Dark Souls 3',
        'weight': '420 lbs'
    },
    {
        'name': 'Justin',
        'parent': 'Heather Blueberry',
        'game': 'Tetris',
        'weight': '180 lbs'
    },{
        'name': 'jerkhead',
        'parent': 'none',
        'games': 'Hello Kitty',
        'weight': '240 lbs'
    }]


def get_key_pair_list(input_dict, key):
    new_list = []
    for item in input_dict:
        my_dict = {}
        if key in item.keys():
            my_dict[key] = item[key]
            new_list.append(my_dict)

    return new_list

print(get_key_pair_list(GAMERS, 'name'))

输出:

[{'name': 'Fatboi'}, {'name': 'Justin'}, {'name': 'jerkhead'}]

综合方式:

key = 'name'
my_list = [{key, item[key]} for item in GAMERS if key in item.keys() ]
print(my_list)

输出:

[{'name', 'Fatboi'}, {'name', 'Justin'}, {'name', 'jerkhead'}]

答案 1 :(得分:0)

您要过滤列表并获取与谓词匹配的第一个值。确保处理该项目不存在的情况!

filtered_info = (
    item for item in GAMERS if item['name'] == 'Justin'
)

justin_info = next(filtered_info, None)

if justin_info is not None:
    print(justin_info)