В моем случае window.open был запущен внутри обещания в угловом режиме, который включил блокировку всплывающих окон, мое решение было:
$scope.gotClick = function(){
var myNewTab = browserService.openNewTab();
someService.getUrl().then(
function(res){
browserService.updateLocation(res.url, myNewTab);
}
);
};
browserService:
this.openNewTab = function(){
var newTabWindow = $window.open();
return newTabWindow;
}
this.updateTabLocation = function(tabLocation, tab) {
if(!tabLocation){
tab.close();
}
tab.location.href = tabLocation;
}
, так вы можете открыть новую вкладку с помощью ответа на обещание и не вызвать блокировщик всплывающих окон.
Вы можете использовать значения объекта collections.Counter
, созданного из списка:
from collections import Counter
l = ['Cats', 'Dogs', 'Cows', 'Cows', 'Cows', 'Sheep', 'Dogs', 'Sheep']
print(list(Counter(l).values()))
Это выводит:
[1, 2, 3, 2]
Ниже приведено описание использования пандами для создания DataFrame с вашим списком.
Затем вы можете использовать функцию pandas value_counts, которая возвращает серию, содержащую количество уникальных животных.
import pandas as pd
myAnimals = {'Animals': ['Cats', 'Dogs', 'Cows', 'Cows', 'Cows', 'Sheep', 'Dogs', 'Sheep']}
myList = pd.DataFrame(myAnimals)
pd.value_counts(myList['Animals'].values)
Я нахожу вывод этого метода более простым:
Cows 3
Sheep 2
Dogs 2
Cats 1
См. value_counts для получения дополнительной информации.