Асинхронная версия:
<script type="text/javascript">
function initialize() {
var locations = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.923036, 151.259052, 5],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&' +
'callback=initialize';
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
В Python 2 работает следующее:
sorted_list = sorted(unsorted_list, key=lambda s: s.lower())
Он работает как для обычных, так и для unicode-строк, поскольку оба они имеют метод lower
.
В Python 2 это работает для сочетания нормальных и юникодовых строк, поскольку значения двух типов можно сравнивать друг с другом. Python 3 работает не так: вы не можете сравнивать строку байтов и строку юникода, поэтому в Python 3 вы должны делать разумную вещь и только сортировать списки одного типа строк.
>>> lst = ['Aden', u'abe1']
>>> sorted(lst)
['Aden', u'abe1']
>>> sorted(lst, key=lambda s: s.lower())
[u'abe1', 'Aden']
Начиная с python 3.3 существует также метод str.casefold
, специально предназначенный для сопоставления без использования и может использоваться вместо str.lower
:
sorted_list = sorted(unsorted_list, key=lambda s: s.casefold())
Я сделал это для Python 3.3:
def sortCaseIns(lst):
lst2 = [[x for x in range(0, 2)] for y in range(0, len(lst))]
for i in range(0, len(lst)):
lst2[i][0] = lst[i].lower()
lst2[i][1] = lst[i]
lst2.sort()
for i in range(0, len(lst)):
lst[i] = lst2[i][1]
Тогда вы можете просто вызвать эту функцию:
sortCaseIns(yourListToSort)
Вы также можете попробовать следующее:
>>> x = ['Aden', 'abel']
>>> x.sort(key=lambda y: y.lower())
>>> x
['abel', 'Aden']
>>> x = ['Aden', 'abel']
>>> sorted(x, key=str.lower) # Or unicode.lower if all items are unicode
['abel', 'Aden']
В Python 3 str
является unicode, но в Python 2 вы можете использовать этот более общий подход, который работает как для str
, так и для unicode
:
>>> sorted(x, key=lambda s: s.lower())
['abel', 'Aden']
Попробуйте это
def cSort(inlist, minisort=True):
sortlist = []
newlist = []
sortdict = {}
for entry in inlist:
try:
lentry = entry.lower()
except AttributeError:
sortlist.append(lentry)
else:
try:
sortdict[lentry].append(entry)
except KeyError:
sortdict[lentry] = [entry]
sortlist.append(lentry)
sortlist.sort()
for entry in sortlist:
try:
thislist = sortdict[entry]
if minisort: thislist.sort()
newlist = newlist + thislist
except KeyError:
newlist.append(entry)
return newlist
lst = ['Aden', 'abel']
print cSort(lst)
Выход
['abel', 'Aden']
В python3 вы можете использовать
list1.sort(key=lambda x: x.lower()) #Case In-sensitive
list1.sort() #Case Sensitive