Заполните одно условие списка другому относительно значений - PullRequest
0 голосов
/ 20 июня 2020

У меня следующий вопрос. У меня есть 3 списка, которые приведены ниже.

Список с именами отделов: Department_List = ["Department_1", "Department_2"] len("Department_List") = 2

Список с именами категорий: Category_List = ["Cat_1","Cat_3","Cat_1","Cat_2",....... ,"Cat_5"] len("Category_List ") = 10000

Подкатегория пустого списка: SubCategory_List = []

Передо мной следующая задача. Я хочу случайным образом заполнить SubCategory_List значениями из Department_List. Проблема в том, что я хочу, чтобы одни и те же элементы из Category_List имели одинаковые значения для названия отдела.

Например, результат будет примерно таким, если Cat_1 = Department_1, Cat_3 = Department_2, Cat_2 = Department_2 и Cat_5 = Department_1:

SubCategory_List = ["Department_1","Department_2","Department_1","Department_2",....... ,"Department_1"]

Уведомление. Я не должен этого делать со словарем!

Спасибо!

Ответы [ 3 ]

1 голос
/ 20 июня 2020

Будет ли это работать для вас

SubCategory_List = []

Department_List = ["Department_1", "Department_2"]

mydict = dict(SubCategory_List = Department_List )

print(mydict)

Вывод

{'SubCategory_List': ['Department_1', 'Department_2']}

Обновление

import random

SubCategory_List = []

Category_List = ["Cat_1","Cat_3","Cat_1","Cat_2","Cat_5"]

Department_List = ["Department_1", "Department_2"]

mydict = dict(SubCategory_List = {x:random.choice(Department_List) for x in Category_List})

print(mydict)

Вывод

{'SubCategory_List': {'Cat_1': 'Department_2', 'Cat_3': 'Department_1', 'Cat_2': 'Department_2', 'Cat_5': 'Department_2'}}

Выполнить второй раз:

{'SubCategory_List': {'Cat_1': 'Department_1', 'Cat_3': 'Department_1', 'Cat_2': 'Department_1', 'Cat_5': 'Department_2'}}
0 голосов
/ 20 июня 2020

Для случайного заполнения SubCategory_List значениями из Department_List длиной len(Category_List) вы можете попробовать следующее:

import random

Department_List = ["Department_1", "Department_2"]

Category_List = ["Cat_1","Cat_3","Cat_1","Cat_2","Cat_5"]


SubCategory_List = [Department_List[random.randint(0,1)] for i in Category_List]
print(SubCategory_List)

Вывод:

['Department_1', 'Department_2', 'Department_2', 'Department_2', 'Department_2']

Если вы хотите заполнить SubCategory_List на основе данного словаря со значениями, которые вы сказали (Cat_1 = Department_1, Cat_3 = Department_2, Cat_2 = Department_2 and Cat_5 = Department_1), вы можете попробовать это:

Department_List = ["Department_1", "Department_2"]

Category_List = ["Cat_1","Cat_3","Cat_1","Cat_2","Cat_5"]

dct={'Cat_1':'Department_1', 'Cat_3':'Department_2', 'Cat_2':'Department_2', 'Cat_5': 'Department_1'}
SubCategory_List = [dct[i] for i in Category_List]
print(SubCategory_List)

Вывод:

['Department_1', 'Department_2', 'Department_1', 'Department_2', 'Department_1']

Если вы хотите создать этот словарь случайным образом, вы можете попробовать это:

import random

#Create the dictionary randomly\\
Department_List = ["Department_1", "Department_2"]

Category_List = ["Cat_1","Cat_3","Cat_1","Cat_2","Cat_5"]

dct={i:Department_List[random.randint(0,1)] for i in Category_List}
print(dct)
SubCategory_List = [dct[i] for i in Category_List]
print(SubCategory_List)

Вывод:

dct
>>>{'Cat_1': 'Department_2', 'Cat_3': 'Department_2', 'Cat_2': 'Department_1', 'Cat_5': 'Department_1'}

SubCategory_List
>>>['Department_2', 'Department_2', 'Department_2', 'Department_1', 'Department_1']
0 голосов
/ 20 июня 2020

Это должно работать:

Department_List = ["Department_1", "Department_2"]

Category_List = ["Cat_1", "Cat_3", "Cat_1", "Cat_2", "Cat_5"]

sublist = {'SubCategory_List': [j for j in Department_List for i in Category_List if i[-2:] == j[-2:]]}

print(sublist)

Результат:

{'SubCategory_List': ['Department_1', 'Department_1', 'Department_2']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...