Создать некоторый список для n человек из списка атрибутов нескольких человек в Python

У меня есть некоторые списки, описывающие некоторый атрибут числа «n» человека (скажем, человек-1, человек-2, ..... человек-n), например списки следующего типа (в соответствии с атрибутом):

name_list= ["alex", "sam", "name-n"]
roll_list= ["1", "2", "roll-n"]
email_list= ["[email protected]", "[email protected]", "email-n"]

Теперь мне нужно создать еще n списков в соответствии с человеком следующим образом:

person-1 = ["alex", "1", "[email protected]"]
person-2 = ["sam", "2", "[email protected]"]
person-n = ["name-n", "roll-n", "email-n"]

Как я могу закодировать это в python?

да, извините за ошибку. отредактировано

Kanchon Gharami 24.12.2020 08:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
108
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Попробуй это :

person_dict = {f'person-{n+1}' : [name, roll, email] for n, (name, roll, email) in enumerate(zip(name_list, roll_list, email_list))}

Выход :

person_dict будет:

{
    'person-1': ['alex', '1', '[email protected]'],
    'person-2': ['sam', '2', '[email protected]'],
    'person-3': ['name-n', 'roll-n', 'email-n']
}

Таким образом, у вас не будет n количества различных переменных, назначенных их соответствующему списку, но у вас будет один словарь, и вы сможете искать ключи в этом словаре с помощью person_dict.get(key).

вы можете использовать 2d-массив:

people = [[name_list[i], roll_list[i], email_list[i]] for i in range(len(name_list))]

Использование zip:

>>> people = [*zip(name_list, roll_list, email_list)]
>>> people
[('alex', '1', '[email protected]'),
 ('sam', '2', '[email protected]'),
 ('name-n', 'roll-n', 'email-n')]

Если можно без дефиса, есть такой способ:

class Dict(object):
    pass

for n, (name, roll, email) in enumerate(zip(name_list, roll_list, email_list)):
    setattr(Dict, 'person' + str(n), [name, roll, email])

Dict.person1 # ['alex', '1', '[email protected]']

name_list= ["алекс", "сэм", "имя-н"]
roll_list= ["1", "2", "ролл-н"]
email_list= ["[email protected]", "[email protected]", "email-n"]

для индекса в диапазоне (len (name_list)):
exec("person_%s = [name_list[index], roll_list[index], email_list[index]]" %(index+1))
распечатать(лицо_1)
распечатать(лицо_2)
распечатать(лицо_3)
Выход:
['алекс', '1', 'алекс@gmail.com']
['Сэм', '2', 'Сэм@gmail.com']
['имя-n', 'roll-n', 'электронная почта-n']

Другие вопросы по теме