Проблема выборки: Как удалить выборку из другой выборки в итерации выборок, чтобы она выбиралась только один раз - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть два словаря:

providers_lists = 
 {'PCP1': ['member2', 'member26', 'member6', 'member9'],
 'PCP2': ['member10', 'member18', 'member2', 'member26', 'member7'],
 'PCP4': ['member10','member13','member25', 'member27', 'member5','member7','member9'],
 'PCP5': ['member13', 'member25', 'member5', 'member6', 'member9'],
 'PCP6': ['member18', 'member27', 'member5']}

 providers = Counter({'PCP1': 2, 'PCP2': 1, 'PCP4': 2, 'PCP5': 1, 'PCP6': 2})

Я хочу выбрать из списка потенциальных членов каждого провайдера в providers_lists путем случайной выборки количества открытых слотов на одного провайдера («PCP»), как видно из provider_counts. И те, которые выбраны, выигрывают место с этим провайдером.

Проблема в том, что «член» может появляться более одного раза в итерации, поскольку у них более одного выбора, но они должны совпадать только один раз. Если они выбраны один раз, они не должны быть выбраны снова. Как мне создать это условие? Изменять объект после каждой итерации?

То, что у меня пока есть:

# Randomly sample out a member
new_matched = dict()
for k, v in providers.items():
    new_matches[k] = random.sample(providers_lists[k], v)

new_matches = 
{'PCP1': ['member26', 'member2'],
 'PCP2': ['member10'],
 'PCP4': ['member9', 'member27'],
 'PCP5': ['member25'],
 'PCP6': ['member27', 'member18']}

Очевидно, что результаты будут выглядеть по-разному при каждом запуске, но, как вы можете видеть, например, " member27 "появляется дважды, но мне бы хотелось, чтобы после того, как они были выбраны, они вышли из другой выборки. Спасибо

...