我有一个像这样的字典对象列表:
[{'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对象,它们实际上是字典
答案 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