[英]How can i create multiple sets from a set of tuples
I am very new to python
and am taking an IoT
course this semester.我对
python
非常陌生,本学期正在学习IoT
课程。 Currently, we are learning about sets
, tuples
, and dictionaries
.目前,我们正在学习
sets
、 tuples
和dictionaries
。
My homework assignment right now is I am given a .json
data file with one GIANT set
of tuples
.我现在的家庭作业是给我一个
.json
数据文件,其中set
GIANT tuples
。
Each tuple has 6 elements每个元组有 6 个元素
[nodeID, dateData, temperature, humidity, pressure, precipitation]
there are 15 different nodes
(0-14) and each node has its own ^^^^^^^data^^^^^^^ .有 15 个不同的
nodes
(0-14),每个节点都有自己的^^^^^^^data^^^^^^^ 。 I want to create a separate list for each node and make a new tuple with only [nodeID, temperature, dateData]
我想为每个节点创建一个单独的列表,并创建一个只有
[nodeID, temperature, dateData]
组
After the sets are made for each node
value.在为每个
node
值设置集合之后。 I want to print the max/min
values of each node with their corresponding dates.我想打印每个节点的
max/min
及其相应的日期。
I don't know if I am being unclear, any help is appreciated.我不知道我是否不清楚,感谢任何帮助。 My code is included.
我的代码包括在内。
import json
from datetime import date, timedelta, datetime
#open .json file as "weatherData"
with open('DenverData.json', 'r') as infile:
weatherData = json.load(infile)
dataSummary = dict()
dataSummary['number_nodes'] = 0
dataSummary['start_date'] = 0
dataSummary['end_date'] = 0
dataSummary['number_days'] = 0
dataSummary['node_temperature'] = 0
dataSummary['node_humidity'] = 0
dataSummary['node_pressure'] = 0
dataSummary['node_precipitation'] = 0
dataSummary['temperature_range'] = 0
dataSummary['humidity_range'] = 0
dataSummary['pressure_range'] = 0
dataSummary['precipitation_range'] = 0
dataSummary['extreme_dates'] = 0
#LISTS
node_list = [nodeID for [nodeID, dateData, temperature, humidity, pressure, precipitation] in
weatherData]
date_list = sorted(list(set(date_list)))
temp_list = [temperature for [nodeID, dateData, temperature, humidity, pressure, precipitation] in
weatherData]
humidity_list = [humidity for [nodeID, dateData, temperature, humidity, pressure, precipitation] in
weatherData]
precipitation_list = [precipitation for [nodeID, dateData, temperature, humidity, pressure,
precipitation] in weatherData]
pressure_list = [pressure for [nodeID, dateData, temperature, humidity, pressure, precipitation] in
weatherData]
#EXTREMES
earliestDay = date_list[0]
latestDay = date_list[-1]
max_temp = max(temp_list)
min_temp = min(temp_list)
max_pressure = max(pressure_list)
min_pressure = min(pressure_list)
max_humidity = max(humidity_list)
min_humidity = min(humidity_list)
max_precipitation = max(precipitation_list)
min_precipitation = min(precipitation_list)
#PRINTS
print("\nNumber of different nodes: ", len(set(node_list)), "\n")
#number of sets
print("Amount of days data collected: ", len(set(date_list))) #number of
days
print("Earliest date of Data collected: ", earliestDay) #the earliest date
print("Latest date of data collected: ", latestDay, "\n") #the latest date
print("Amount of different temperature readings: ", len(set(temp_list)))
print("Maximum temperature: ", max(temp_list), "[C]")
print("Minimum temperature: ", min(temp_list), "[C]\n")
print("Amount of humidity readings: ", len(set(humidity_list)))
print("Maximum Humidity: ", max(humidity_list), "[%RH]")
print("Minimum Humidity: ", min(humidity_list), "[%RH]\n")
print("The number of different precipitation readings are: ",len(set(precipitation_list)))
print("Maximum Precipitation: ", max(precipitation_list), "[in]")
print("Minimum Precipitation: ", min(precipitation_list), " [in]")
print("The number of different pressure readings are: ",len(set(pressure_list)))
print("Maximum Pressure: ", max(humidity_list), "[ATM]")
print("Minimum Pressure: ", min(humidity_list), "[ATM]\n")
#FULL DATA PRINTS
print("Tuple syntax:\n [NodeID, 'Date', Temperature, Humidity, Pressure[mB], Precipitation]\n",
weatherData[0], "\n")
print("The different nodes are labeled as one of the following: \n", set(node_list), "\n")
print("Dates that data were collected:\n", sorted(set(date_list)), "\n")
print("Temperatures that were recorded:\n", sorted(list(set(temp_list))))
print("Precipitation measurements:\n", sorted(set(precipitation_list)))
print("Pressure values:\n", sorted(set(pressure_list)))
#Summary Report to json file
dataSummary['number_nodes'] = len(set(node_list))
dataSummary['start_date'] = date_list[-1]
dataSummary['end_date'] = date_list[0]
dataSummary['number_days'] = len(set(date_list))
dataSummary['node_humidity'] = range(set(humidity_list))
dataSummary['node_temperature'] = len(set(temp_list))
dataSummary['node_pressure'] = len(set(pressure_list))
dataSummary['node_precipitation'] = len(set(precipitation_list))
dataSummary['temperature_range'] = max_temp, min_temp
dataSummary['humidity_range'] = max_humidity, min_humidity
dataSummary['pressure_range'] = max_pressure, min_pressure
dataSummary['precipitation_range'] = max_precipitation, min_precipitation
#PREVIEW
print(dataSummary)
#DUMP
with open('denver_summary.json', 'w') as outfile:
json.dump(dataSummary, outfile)
To get the maximum value of temperature, and the corresponding node and date it was recorded in, we can simply use sorted
with a key.要获取温度的最大值,以及记录它的相应节点和日期,我们可以简单地使用带键的
sorted
。
new_list = [i[0], i[2], i[1] for i in weatherData] #node_id, temperature, date
list_sorted_by_temp = sorted(new_list, key = lambda x: x[1]) #2nd element in tuple is temperature
max_temp = list_sorted_by_temp[-1]
print('max temperature was', max_temp[1], 'recorded by node', max_temp[0], 'on', max_temp[2])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.