Список python расширяет другой список [duplicate]

Асинхронная версия:

<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>
93
задан jamylak 27 May 2012 в 04:38
поделиться

6 ответов

В 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())
134
ответ дан jpp 3 September 2018 в 14:28
поделиться

Я сделал это для 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)
1
ответ дан Alexey Gorozhanov 3 September 2018 в 14:28
поделиться

Вы также можете попробовать следующее:

>>> x = ['Aden', 'abel']
>>> x.sort(key=lambda y: y.lower())
>>> x
['abel', 'Aden']
9
ответ дан Ashwini Chaudhary 3 September 2018 в 14:28
поделиться
>>> 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']
39
ответ дан jamylak 3 September 2018 в 14:28
поделиться

Попробуйте это

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']

-2
ответ дан Mirage 3 September 2018 в 14:28
поделиться

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

list1.sort(key=lambda x: x.lower()) #Case In-sensitive             
list1.sort() #Case Sensitive
3
ответ дан Soner Gönül 3 September 2018 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: