从python中的字典列表中提取元素

时间:2017-07-05 23:20:23

标签: python json

我有一个像这样的字典对象列表:

[{'Id': 46, 'Date': '2016-05-09T00:00:00', 'Type': 1, 'PId': None, 'Ct': None},
{'Id': 108, 'Date': '2017-07-01T00:00:00', 'Type': 10, 'PId': None, 'Ct': None}]

我可以这样做从这个列表的第一个元素中提取Date

list_dict[0].get('Date')

如何获得与Date 10对应的Type(没有硬编码,它是列表中的第二个元素)?如果Type 10不存在,解决方案应返回None。

- 编辑:

以前版本的问题是假设列表是json对象,它们实际上是字典

2 个答案:

答案 0 :(得分:1)

简单循环

您可以使用简单的循环,将Type设置为10的第一个字典。

lst = [
    {'Id': 46, 'Date': '2016-05-09T00:00:00', 'Type': 1, 'PId': None, 'Ct': None},
    {'Id': 108, 'Date': '2017-07-01T00:00:00', 'Type': 10, 'PId': None, 'Ct': None},
]
type_10_date = None
for obj in lst:
    if obj.get('Type') == 10:
        type_10_date = obj.get('Date')

print(type_10_date)
# 2017-07-01T00:00:00

使用过滤器

如果选择,您还可以使用内置的filter函数,它使用一个谓词函数来确定迭代中的哪些值(在这种情况下为list)应该返回。 注意:我已经为从内置过滤器功能获得list对象的Python 3用户转换了filter

type_10_objs = list(filter(lambda d: d.get('Type') == 10, lst))
if type_10_objs:  # This could be an empty list!
    print(type_10_objs[0].get('Date'))
# 2017-07-01T00:00:00

答案 1 :(得分:0)

只需检查类型并返回相应的日期,如下所示:

input = [{'Id': 46, 'Date': '2016-05-09T00:00:00', 'Type': 1, 'PId': None, 'Ct': None}, {'Id': 108, 'Date': '2017-07-01T00:00:00', 'Type': 10, 'PId': None, 'Ct': None}]

def example(input):

    for element in input:
        if element['Type'] == 10:
            return element['Date']

    return None