сравнить список и получить количество

1

У меня есть три списка

year= [2001, 2002, 2005, 2002, 2004, 2001, 2001, 2002, 2003, 2003, 2002, 2002, 2003, 2004, 2005, 2003, 2004, 2005, 2004, 2004 ]
indviduals= [12, 23, 24, 28,30, 15, 17, 18, 18, 19, 12, 15, 12, 12, 12, 15, 15, 15, 12, 12]
employers= ['a', 'b', 'c', 'd', 'e', 'a', 'a', 'b', 'b', 'c', 'b', 'a', 'c', 'd', 'e', 'a', 'a', 'a', 'a', 'b']

когда я запускаю сценарий ниже, я могу получить отдельных сотрудников по спискам. Я хочу сделать это

a:[12, 15, 17, 15] за 2001 год

Если я смогу это сделать, я думаю, что подсчет получается просто.

for index, item in enumerate(year): 
    for i in np.unique(employers[index]):
        count=0
        #print(i)

        #j=indviduals[index]
        count +=1
        print(i)
  • 0
    Если вы используете numpy, есть ли причина, по которой у вас есть три отдельных списка?
  • 0
    На самом деле, нет. может быть преобразован в массив
Теги:
list

2 ответа

1
Лучший ответ

Как сделать это для всех ваших работодателей? используя метод buitin dict dict.fromkeys

d = dict.fromkeys(employers, ())
cond_year = 2001
for i,e,y in zip(indviduals, employers, year):
    if y == cond_year:
        d[e] = d[e] + (i,)

который печатает

{'a': (12, 15, 17), 'b': (), 'c': (), 'd': (), 'e': ()}
  • 0
    Канак, откуда ты взял этот диктат? модуль коллекций?
  • 0
    @Ipt. Nop. Buit в.
Показать ещё 6 комментариев
3

Вы можете использовать понимание списка

Найдите всех лиц, чей соответствующий элемент в списке работодателей является "а",

[individuals[i] for i, x in enumerate(employers) if x == 'a']

Если вы хотите считать это, то

sum(1 for x in employers if x == 'a') 

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

  • 0
    да, но как вы связываете это с «годом»? Таким образом, в основном на 2001 год, у работодателя а есть эти работники, у работодателя б есть эти работники и т. Д.
  • 0
    Добавьте and year[i] == 2001 к условному
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню