Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2023, 05:52   #1
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию Как найти значение во вложенных списках python и если его там нет то дописать

Ребята всем привет, Как найти значение во вложенных списках python и если его там нет то дописать

[['sama', 11, 11, 11, 11, 11, 11, nan, nan, 33.0, nan, '14'], ['samo', 12, 11, 12, 11, 12, 11, nan, 14.0, nan, nan, '14'], ['sami', 13, 11, 13, 11, 13, 11, 12.0, nan, nan, 33.0, '14'], ['sam', 14, 11, 14, 11, 14, 11, nan, nan, nan, nan, '14']]

Список загружаю через pandas из excel, а может проще не загружать а сразу просмотреть строки в excel и если значения нет дописать в конце строки?
omelsn@mail.ru вне форума Ответить с цитированием
Старый 27.03.2023, 07:00   #2
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию Как найти значение во вложенных списках python иесли его таи\

for i in range(len(list)):
for j in range(len(list[i])):
if i == "14":
continue
if i != "14":
list[i].append("14")

добавляет во все списки

sama 11 11 11 11 11 11 nan nan 33.0 nan 14
samo 12 11 12 11 12 11 nan 14.0 nan nan 14
sami 13 11 13 11 13 11 12.0 nan nan 33.0 14
sam 14 11 14 11 14 11 nan nan nan nan 14
[['sama', 11, 11, 11, 11, 11, 11, nan, nan, 33.0, nan, '14'], ['samo', 12, 11, 12, 11, 12, 11, nan, 14.0, nan, nan, '14'], ['sami', 13, 11, 13, 11, 13, 11, 12.0, nan, nan, 33.0, '14'], ['sam', 14, 11, 14, 11, 14, 11, nan, nan, nan, nan, '14']]
omelsn@mail.ru вне форума Ответить с цитированием
Старый 27.03.2023, 07:17   #3
New_Jersey
С нуля
Пользователь
 
Аватар для New_Jersey
 
Регистрация: 24.03.2023
Сообщений: 17
По умолчанию

Код:
ВВОД x = [['sama', 11,   '14'], ['samo', 12, 11,  11,  14.0,  '14'], ['sami', 13,  33.0, '14'], ['sam',  11,  '14']]

for arr in x:
    if 'sama' in arr:
        print(True)    
    else:
        arr.append("sama")
print(x)
Код:
ВЫВОД [['sama', 11, '14'], ['samo', 12, 11, 11, 14.0, '14', 'sama'], ['sami', 13, 33.0, '14', 'sama'], ['sam', 11, '14', 'sama']]

Последний раз редактировалось New_Jersey; 27.03.2023 в 07:29.
New_Jersey вне форума Ответить с цитированием
Старый 27.03.2023, 11:12   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Так i это же индекс, а не значение. А не должен добавить в список только если встретился индекс "14" <- строка текста. range не выдаст строку никогда.

Обрамляйте эти буквы в тег [CODE][/CODE] иначе вам не будут отвечать, да и программа ваша не рабочая становится.

https://godbolt.org/z/Ts67dKc3e

Последний раз редактировалось macomics; 27.03.2023 в 11:24.
macomics вне форума Ответить с цитированием
Старый 11.09.2023, 08:45   #5
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию

Добрый день подскажите пжл как во вложенном списке найти значение и если его там нет дописать, вот с таким кодом все понятно

list = [[1, 2, 3, 4, 66], [5, 6], [7, 8, 9]]

k = 66

for i in range(len(list)):
for j in range(len(list[i])):
if k not in list[i]:
list[i].append(k)

print (list)

А как быть вот с этим Мой код.txt и Result.xlsx
Вложения
Тип файла: txt Мой код.txt (4.9 Кб, 3 просмотров)
Тип файла: xlsx result.xlsx (5.0 Кб, 2 просмотров)
omelsn@mail.ru вне форума Ответить с цитированием
Старый 11.09.2023, 09:04   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

А что не так с вашим кодом в части поиска? Только повторю из другой темы: не используйте имя list, а еще не нужен цикл по j и вложенные if:
Код:
            for i in range(len(list_)):
                if name in list_[i] and k not in list_[i]:
                    list_[i].append(k)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.09.2023, 08:06   #7
omelsn@mail.ru
Пользователь
 
Регистрация: 27.03.2023
Сообщений: 13
По умолчанию

BDA, Здравствуйте, спасибо что откликнулись, про list я понял, только код добавляет дату при каждом его запуске, а задумка добавить один раз и потом хоть сколько раз запускай должен видеть что человек уже был в кадре сегодня
sergey NaT NaT 2023-03-20 00:00:00 NaT NaT 2023-05-13 00:00:00 2023-05-14 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 NaT 2023-09-13 00:00:00 2023-09-13 00:00:00 2023-09-13
вот видите два раза запустил и он 2 раза добавил дату сегодняшнюю
omelsn@mail.ru вне форума Ответить с цитированием
Старый 13.09.2023, 08:43   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Вы, наверное, что-то меняли в коде, у вас то со временем дата, то без. Вот упрощенный ваш код (без распознавания лица, только запись даты для случайного имени), дата лишний раз не пишется:
Код:
import pandas as pd
from datetime import datetime
from random import choice

excel_data_df = pd.read_excel('result.xlsx', sheet_name = 'Sheet', header = None)
excel_data_df.iloc[:,1:] = excel_data_df.iloc[:,1:].apply(lambda x: pd.to_datetime(x).dt.date)
list_ = excel_data_df.values.tolist()

k = datetime.now().date()

known_face_names = [
    "sam",
    "sama"
]

name = choice(known_face_names)
print(name)

for i in range(len(list_)):
    if name in list_[i] and k not in list_[i]:
        list_[i].append(k)

excel_data_df = pd.DataFrame(list_)
            
for row in list_:
    print(' '.join([str(elem) for elem in row]))

excel_data_df.to_excel(r'result.xlsx', sheet_name = "Sheet", index = False, header = False)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать формулы для расчёта, когда с помощью если не получается, т.к. превышает количество вложенных функций Lisichka_excel Помощь студентам 2 07.08.2022 17:46
Python Дописать код okeyaychenik Помощь студентам 0 09.02.2021 15:01
[Pascal ABC] Если максимальное значение из трёх введённых чисел больше 50, то найти произведение чисел, иначе - уменьшить каждое число в 2 раза. Supard Помощь студентам 4 29.09.2017 10:20
найти наибольшее и наименьшее значение функции y=3*x^2+x-4, если на заданном интервале от [a,b] х изменяется с шагом 0,1 Конь Антон Паскаль, Turbo Pascal, PascalABC.NET 3 06.03.2017 14:26
Ввести число. Если оно положительное, найти его квадратный корень. Если отрицательное - возвести в квадратВвести число. Если оно п FYNZIK Паскаль, Turbo Pascal, PascalABC.NET 1 18.02.2014 16:29