簡體   English   中英

如何從一組元組創建多個集

[英]How can i create multiple sets from a set of tuples

我對python非常陌生,本學期正在學習IoT課程。 目前,我們正在學習setstuplesdictionaries

我現在的家庭作業是給我一個.json數據文件,其中set GIANT tuples

每個元組有 6 個元素

[nodeID, dateData, temperature, humidity, pressure, precipitation] 

有 15 個不同的nodes (0-14),每個節點都有自己的^^^^^^^data^^^^^^^ 我想為每個節點創建一個單獨的列表,並創建一個只有[nodeID, temperature, dateData]

在為每個node值設置集合之后。 我想打印每個節點的max/min及其相應的日期。

我不知道我是否不清楚,感謝任何幫助。 我的代碼包括在內。

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)

要獲取溫度的最大值,以及記錄它的相應節點和日期,我們可以簡單地使用帶鍵的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM