Итак, я пытался создать сценарий, в котором я сравниваю два списка, где я называю их old_list и new_list.Old_list - это переменная, в которой я использую до того, как True.И в то время как истина, где я использую new_list ([line.rstrip('\n') for line in open('newlist.txt')]
.Тогда моей идеей было сделать сравнение old_list с new_list.
У меня есть Json (newlist), который выглядит следующим образом:
{
"name": "LetsTryThis",
"grades": [{
"name": "Stack",
"pass_grade": 0
},
{
"name": "Over",
"pass_grade": 0
},
{
"name": "flow",
"pass_grade": 0
},
{
"name": "com",
"pass_grade": 0
}
]
}
и код:
def getGradeChangeNames(old_list,new_list):
old_grades = {i["name"]: i["pass_grade"] for i in old_list["grades"]}
new_grades = {i["name"]: i["pass_grade"] for i in new_list["grades"]}
changed_grades = [old_name for old_name,old_grade in old_grades.items() if old_grade != new_grades[old_name] ]
return changed_grades
old_list = {'name': 'LetsTryThis', 'grades': [{'name': 'Stack', 'pass_grade': 1}, {'name': 'Over', 'pass_grade': 0},{'name': 'Flow', 'pass_grade': 0},{'name': 'Com', 'pass_grade': 0}]}
new_list = [line.rstrip('\n') for line in open('newlist.txt')]#For be able to test it you can just copy the same value as old_list and just change the values of pass_grades to 1
while True:
test = getGradeChangeNames(old_list, new_list)
if test != []:
print("New item found - " + ", ".join(test))
old_list = new_list
print(old_list)
else:
print("sleep")
time.sleep(2)
Функция getGradeChangeNames()
будет возвращать все имена, для которых оценка была изменена, либо 0-> 1, либо из 1-> 0.
Однако, что я хочу, чтобы мой сценарий делал:
Я хочу создать сценарий, в котором он будет проверять всякий раз, когда значение изменяется 0 -> 1 и 1 -> 0. Но я хочу, чтобы он печатал только тогда, когда происходит 0 -> 1 (выводит «имя»), а не когда1 -> 0 происходит.Однако, как вы можете видеть, я сплю (2), и что может произойти, так это то, что я могу изменить значение json newlist.txt
и т. Д. На:
{
"name": "LetsTryThis",
"grades": [{
"name": "Stack",
"pass_grade": 0
},
{
"name": "Over",
"pass_grade": 0
},
{
"name": "flow",
"pass_grade": 1
},
{
"name": "com",
"pass_grade": 1
}
]
}
, и в этом случае оно должно пропинговать 'Over' и'com' и при поиске следующего цикла он больше не должен пинговать.Если pass_grade изменяется от 1 до 0, он должен обновлять значение, не выводя значения, всякий раз, когда он снова нажимает 0 к 1, он должен распечатывать снова.
Мой вопрос: Как я могу быть в состоянии распечатать все значения, которые изменяются от 0-> 1 только один раз, и обновить значение, если значение меняется с 1 -> 0?
Я надеюсь, я действительно надеюсь, что я описалПравильно, и если есть вопросы, не стесняйтесь комментировать, и я сделаю все возможное, чтобы ответить!