Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用字典的值筛选字典列表_Python_Json - Fatal编程技术网

在python中使用字典的值筛选字典列表

在python中使用字典的值筛选字典列表,python,json,Python,Json,我有一个字典列表,我想过滤并创建一个对应于列表值的向量。该列表文件包含多个条目,其中每个条目都有一个字段时间、项目、状态:{values1、value2、value3}。变量项可以采用以下11个值[0.0、0.1、0.2、0.3…1.0]。对于每个元素的值,我希望找到相应的value3值,并创建一个包含11个元素的向量,其中每个元素都应对应于相关项变量的value3。例如,如果我的列表是: my_json = [{'time': datetime.datetime(2018, 7, 4, 13,

我有一个字典列表,我想过滤并创建一个对应于列表值的向量。该列表文件包含多个条目,其中每个条目都有一个字段
时间、项目、状态:{values1、value2、value3}
。变量
可以采用以下11个值
[0.0、0.1、0.2、0.3…1.0]
。对于每个元素的值,我希望找到相应的
value3
值,并创建一个包含11个元素的向量,其中每个元素都应对应于相关
变量的
value3
。例如,如果我的列表是:

my_json = [{'time': datetime.datetime(2018, 7, 4, 13, 42, 55, 613000), 'item': 0.3, 'state': {'value1': 0.0, 'value2': 0.167, 'value3': 0.833}}
{'time': datetime.datetime(2018, 7, 6, 9, 40, 54, 44000), 'item': 0.6, 'state': {'value1': 0.0, 'value2': 0.273, 'value3': 0.727}}
{'time': datetime.datetime(2018, 7, 6, 10, 0, 16, 507000), 'item': 0.5, 'state': {'value1': 0.0, 'value2': 0.0, 'value3': 1.0}}
{'time': datetime.datetime(2018, 7, 6, 10, 37, 16, 769000), 'item': 0.5, 'state': {'value1': 0.0, 'value2': 0.0, 'value3': 1.0}}
{'time': datetime.datetime(2018, 7, 6, 10, 38, 28, 948000), 'item': 0.5, 'state': {'value1': 0.0, 'value2': 0.143, 'value3': 0.857}}
{'time': datetime.datetime(2018, 7, 6, 10, 41, 11, 201000), 'item': 0.4, 'state': {'value1': 0.0, 'value2': 0.091, 'value3': 0.909}}
{'time': datetime.datetime(2018, 7, 6, 11, 45, 25, 145000), 'item': 0.1, 'state': {'value1': 0.0, 'value2': 0.083, 'value3': 0.917}}
{'time': datetime.datetime(2018, 7, 6, 11, 46, 31, 508000), 'item': 0.1, 'state': {'value1': 0.0, 'value2': 0.0, 'value3': 1.0}}
{'time': datetime.datetime(2018, 7, 6, 11, 46, 33, 120000), 'item': 0.1, 'state': {'value1': 0.0, 'value2': 0.214, 'value3': 0.786}}
{'time': datetime.datetime(2018, 7, 6, 12, 36, 25, 695000), 'item': 0.0, 'state': {'value1': 0.0, 'value2': 0.0, 'value3': 1.0}}
{'time': datetime.datetime(2018, 7, 6, 12, 37, 35, 721000), 'item': 0.0, 'state': {'value1': 0.0, 'value2': 0.0, 'value3': 1.0}}]

上述示例的期望输出是:
[1.0,0.76,0.0,0.833,0.909,0.857,0.727,0.0,0.0,0.0,0.0]
,考虑到时间,该输出也保留了最新的值(当存在多个项目值时)。我尝试使用if-else语句来解决它,但是,我想要一个更优雅的解决方案。

创建一个字典,其键是
值。循环执行
my_json
,将
value3
分配给相应的元素

d = {}
for i in my_json:
    d[i['item']] = i['state']['value3']

我假设列表已经按时间戳排序;如果没有,请先对列表排序。

创建一个字典,其键为
值。循环执行
my_json
,将
value3
分配给相应的元素

d = {}
for i in my_json:
    d[i['item']] = i['state']['value3']

我假设列表已经按时间戳排序;如果没有,请先对列表进行排序。

我扩展了上述解决方案,以包括按时间排序,以备需要

sorted_list = sorted(my_json, key=lambda k: k['time'])    

d = {}
for i in sorted_list:
    d[i['item']] = i['state']['value3']

我扩展了上述解决方案,以包括按时间排序,以防需要

sorted_list = sorted(my_json, key=lambda k: k['time'])    

d = {}
for i in sorted_list:
    d[i['item']] = i['state']['value3']

你能举一个你尝试过但没有成功的例子吗?我尝试过实现if-else逻辑,但如果可能的话,我会做一些更优雅的事情。那不是一个有效的JSON文件。如果JSON文件中有多个对象,则需要将它们包装在一个数组中。JSON还需要在字符串周围加双引号,而不是单引号,并且不允许函数调用。@Barmar它前面也没有
my_JSON=
。我想这就是解析后的json:PCan你能举一个你尝试过但没有成功的例子吗?我尝试过实现if-else逻辑,但如果可能的话,我会做一些更优雅的东西。这不是一个有效的json文件。如果JSON文件中有多个对象,则需要将它们包装在一个数组中。JSON还需要在字符串周围加双引号,而不是单引号,并且不允许函数调用。@Barmar它前面也没有
my_JSON=
。我想这就是解析后的json:P