Помогите с решением задачи пожалуйста!!!

SON.artov

Новичок
Пользователь
Июн 30, 2022
3
0
1
Добрый день, пытаюсь постичь язык Python, только начал изучать, есть задача:
дан список raw он наполнен списками, надо убрать из основного списка все списки у которых первое значение <10 и > 12 (либо убрать из основного, либо путем создания нового).
Пример данных в основном списке:
.10, datetime.datetime(2066, 8, 17, 3, 0), 2012651
.[3, datetime.datetime(2066, 8, 17, 22, 43, 11), 22369621
.[1, datetime.datetime(2066, 8, 17, 22, 42, 45), 16973824
.[30, datetime.datetime(2066, 8, 17, 22, 0), 2017897
.[12, datetime.datetime(2066, 8, 17, 3, 0), 686676
.[15, datetime.datetime(2066, 8, 17, 3, 0), 173055
.[16, datetime.datetime(2066, 8, 17, 3, 0), 115532
.[11, datetime.datetime(2066, 8, 17, 3, 0), 1325975
.[19, datetime.datetime(2066, 8, 17, 3, 0), 0
.[30, datetime.datetime(2066, 8, 17, 21, 0), 2017556
И второй вопрос, если я обращаюсь в основном списке ко 2 элементу, то получаю:
2066-08-17 03:00:00
2066-08-17 22:43:11
2066-08-17 22:42:45
2066-08-17 22:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 21:00:00
а при обращении к общему списку с datetime, почему так, объясните пожалуйста
 

chesnok_gg

Новичок
Пользователь
Июн 29, 2022
3
0
1
тебе никто не поможет
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
тебе никто не поможет
если вам никто не помог, это не значит, что ему никто не поможет
для сведения, есть такая вещь, как работа, и днем люди обычно работают...
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
дан список raw он наполнен списками, надо убрать из основного списка все списки у которых первое значение <10 и > 12 (либо убрать из основного, либо путем создания нового).
можно так
Python:
import datetime

rawLst = [[10, datetime.datetime(2066, 8, 17, 3, 0), 2012651],
          [3, datetime.datetime(2066, 8, 17, 22, 43, 11), 22369621],
          [1, datetime.datetime(2066, 8, 17, 22, 42, 45), 16973824],
          [30, datetime.datetime(2066, 8, 17, 22, 0), 2017897],
          [12, datetime.datetime(2066, 8, 17, 3, 0), 686676],
          [15, datetime.datetime(2066, 8, 17, 3, 0), 173055],
          [16, datetime.datetime(2066, 8, 17, 3, 0), 115532],
          [11, datetime.datetime(2066, 8, 17, 3, 0), 1325975],
          [19, datetime.datetime(2066, 8, 17, 3, 0), 0],
          [30, datetime.datetime(2066, 8, 17, 21, 0), 2017556]]

resultLst = []

for i in rawLst:
    if 10 > i[0] or i[0] > 12:
        resultLst.append(i)

print(resultLst)


И второй вопрос, если я обращаюсь в основном списке ко 2 элементу, то получаю:
2066-08-17 03:00:00
2066-08-17 22:43:11
2066-08-17 22:42:45
2066-08-17 22:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 03:00:00
2066-08-17 21:00:00
а при обращении к общему списку с datetime, почему так, объясните пожалуйста
я не понял вопрос
 

SON.artov

Новичок
Пользователь
Июн 30, 2022
3
0
1
можно так
Python:
import datetime

rawLst = [[10, datetime.datetime(2066, 8, 17, 3, 0), 2012651],
          [3, datetime.datetime(2066, 8, 17, 22, 43, 11), 22369621],
          [1, datetime.datetime(2066, 8, 17, 22, 42, 45), 16973824],
          [30, datetime.datetime(2066, 8, 17, 22, 0), 2017897],
          [12, datetime.datetime(2066, 8, 17, 3, 0), 686676],
          [15, datetime.datetime(2066, 8, 17, 3, 0), 173055],
          [16, datetime.datetime(2066, 8, 17, 3, 0), 115532],
          [11, datetime.datetime(2066, 8, 17, 3, 0), 1325975],
          [19, datetime.datetime(2066, 8, 17, 3, 0), 0],
          [30, datetime.datetime(2066, 8, 17, 21, 0), 2017556]]

resultLst = []

for i in rawLst:
    if 10 > i[0] or i[0] > 12:
        resultLst.append(i)

print(resultLst)



я не понял вопрос
Во первых спасибо за отклик! мой код таков:
Python:
import json
import datetime

file = open('json.txt') #Открытие файла из тойже директории
temp = file.read() # Присвоение в data данных из файла
data=json.loads(temp) #Создание списка json из данных data (res_dict[2] - доступ ко всему сообщению, где 2 это номер сообщения)
file.close #закрытие файла

a = 0

for key in data: #цикл перебирает ключи в библиотеке
    if a <= 15:
        d_raw = { #создаю словарь с нужными сырыми значениями
        'value' : data[a][ 'decodedPayload'],
        'rssi' : data[a]['RSSI'],
        'stationId' : data[a]['stationId'],
        'timeDetected' : data[a]['timeDetected']
        }

        ras = d_raw['value'] # ras - сообщение для расшифровки
        soob = int(ras[0]+ras[1]) # soob - номер сообщения
        s_date_raw = int(ras[2]+ras[3]+ras[4]+ras[5]+ras[6]+ras[7]+ras[8]+ras[9], 16) #s_date - дата в 16 системе, с переводом в timestamp
        s_value_raw = ras[10]+ras[11]+ras[12]+ras[13]+ras[14]+ras[15]+ras[16]+ras[17] #s_value_raw - энергия в 16 системе
        s_value = int(s_value_raw, 16) # s_value - перевод в 10
        s_date = datetime.datetime.fromtimestamp(s_date_raw) # перевод timestamp в дату
        #print (type(s_date))
        d_decod =[soob, s_date, s_value]
        #print (dict_decod.keys())
        #d_decod1 = d_decod.copy()
        #d_decod = {key:val for key, val in d_decod.keys() if val < 10}
        #print (d_decod)

        while d_decod:
            if 10 >= d_decod[0] <= 12:
                decod = [d_decod]
        print (decod)
    else:
        break
    a+=1
Так вот если я вывожу на печать print (d_decod), то получаю значение даты с datetime, а если print (d_decod[1]) то нормальное время без datetime
 

Вложения

  • json.txt
    3,7 КБ · Просмотры: 0
Последнее редактирование:

SON.artov

Новичок
Пользователь
Июн 30, 2022
3
0
1
Во первых спасибо за отклик! мой код таков:
import json
import datetime

file = open('json.txt') #Открытие файла из тойже директории
temp = file.read() # Присвоение в data данных из файла
data=json.loads(temp) #Создание списка json из данных data (res_dict[2] - доступ ко всему сообщению, где 2 это номер сообщения)
file.close #закрытие файла

a = 0
for key in data: #цикл перебирает ключи в библиотеке
if a <= 15:
d_raw = { #создаю словарь с нужными сырыми значениями
'value' : data[a][ 'decodedPayload'],
'rssi' : data[a]['RSSI'],
'stationId' : data[a]['stationId'],
'timeDetected' : data[a]['timeDetected']
}
ras = d_raw['value'] # ras - сообщение для расшифровки
soob = int(ras[0]+ras[1]) # soob - номер сообщения
s_date_raw = int(ras[2]+ras[3]+ras[4]+ras[5]+ras[6]+ras[7]+ras[8]+ras[9], 16) #s_date - дата в 16 системе, с переводом в timestamp
s_value_raw = ras[10]+ras[11]+ras[12]+ras[13]+ras[14]+ras[15]+ras[16]+ras[17] #s_value_raw - энергия в 16 системе
s_value = int(s_value_raw, 16) # s_value - перевод в 10
s_date = datetime.datetime.fromtimestamp(s_date_raw) # перевод timestamp в дату
#print (type(s_date))
d_decod =[soob, s_date, s_value]
#print (dict_decod.keys())
#d_decod1 = d_decod.copy()
#d_decod = {key:val for key, val in d_decod.keys() if val < 10}
#print (d_decod)
while d_decod:
if 10 >= d_decod[0] <= 12:
decod = [d_decod]
print (decod)

else:
break
a+=1
Так вот если я вывожу на печать print (d_decod), то получаю значение даты с datetime, а если print (d_decod[1]) то нормальное время без datetime
По вашему предложению получил:
Traceback (most recent call last):
File "Luch.py", line 31, in <module>
if 10 > i[0] or i[0] > 12:
TypeError: 'int' object is not subscriptable
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Во первых спасибо за отклик! мой код таков:
import json
import datetime

file = open('json.txt') #Открытие файла из тойже директории
temp = file.read() # Присвоение в data данных из файла
data=json.loads(temp) #Создание списка json из данных data (res_dict[2] - доступ ко всему сообщению, где 2 это номер сообщения)
file.close #закрытие файла

a = 0
for key in data: #цикл перебирает ключи в библиотеке
if a <= 15:
d_raw = { #создаю словарь с нужными сырыми значениями
'value' : data[a][ 'decodedPayload'],
'rssi' : data[a]['RSSI'],
'stationId' : data[a]['stationId'],
'timeDetected' : data[a]['timeDetected']
}
ras = d_raw['value'] # ras - сообщение для расшифровки
soob = int(ras[0]+ras[1]) # soob - номер сообщения
s_date_raw = int(ras[2]+ras[3]+ras[4]+ras[5]+ras[6]+ras[7]+ras[8]+ras[9], 16) #s_date - дата в 16 системе, с переводом в timestamp
s_value_raw = ras[10]+ras[11]+ras[12]+ras[13]+ras[14]+ras[15]+ras[16]+ras[17] #s_value_raw - энергия в 16 системе
s_value = int(s_value_raw, 16) # s_value - перевод в 10
s_date = datetime.datetime.fromtimestamp(s_date_raw) # перевод timestamp в дату
#print (type(s_date))
d_decod =[soob, s_date, s_value]
#print (dict_decod.keys())
#d_decod1 = d_decod.copy()
#d_decod = {key:val for key, val in d_decod.keys() if val < 10}
#print (d_decod)
while d_decod:
if 10 >= d_decod[0] <= 12:
decod = [d_decod]
print (decod)

else:
break
a+=1
Так вот если я вывожу на печать print (d_decod), то получаю значение даты с datetime, а если print (d_decod[1]) то нормальное время без datetime
вставьте, пожалуйста, код, как код, соблюдая отступы
 

chesnok_gg

Новичок
Пользователь
Июн 29, 2022
3
0
1
если вам никто не помог, это не значит, что ему никто не поможет
для сведения, есть такая вещь, как работа, и днем люди обычно работают...
фига ты серьезный, мэн
 

Форум IT Специалистов