Какова цель Array.GetLowerBound (int)?

Это общая версия. Это может быть использовано для создания словаря со значениями в виде списка, даже если ключ присутствует только в одном из них.

dic1 = {'A': 25, 'B': 41, 'C': 32}
dic2 = {'A': 21, 'B': 12, 'C': 62}
result = {}
for key in (dic1.viewkeys() | dic2.keys()):
    if key in dic1: result.setdefault(key, []).append(dic1[key])
    if key in dic2: result.setdefault(key, []).append(dic2[key])

print result

Выход

{'A': [25, 21], 'C': [32, 62], 'B': [41, 12]}

Если вы используя Python 3, цикл должен быть изменен следующим образом. Благодаря Martijn:)

for key in (dic1.keys() | dic2.keys()):
14
задан Cheeso 19 August 2009 в 17:02
поделиться

3 ответа

В многомерном массиве в VB или различных API, производных от COM, вы можете запросить нижнюю границу по измерению. Типы массивов могут быть основаны на 0 или 1 (т. Е. Начиная с нуля или 1), и это применимо также к многомерным массивам.

Это также может применяться к массивам, предоставляемым через взаимодействие COM. Например, многие API Excel используют массивы на основе 1, а многие функции API используют массивы вариантов в качестве параметров (вариант, по сути, был изобретен как тип данных для ячейки электронной таблицы).

При использовании COM-взаимодействия вам все равно придется хорошо работать с этими API и системами типов. Первоначально они были разработаны для использования с VBA, а «классические» языковые варианты VB4-6 имели поистине причудливую систему типов из-за их тесной связи с COM. Системы типа .Net языка C # et. al. несколько менее болезненны, чем их предшественники на основе COM, но вы все равно почувствуете боль при использовании COM-взаимодействия.

7
ответ дан 1 December 2019 в 09:33
поделиться

Теоретически вы можете создавать массивы с любой нижней или верхней границей для индексации. VB.NET может использовать это для создания массивов с нижней границей 1, чтобы быть совместимыми с некоторыми более старыми версиями VB, но вы можете использовать Array.CreateInstance (Type, Int32 [], Int32 []) , чтобы создать массив с любой желаемой нижней границей.

17
ответ дан 1 December 2019 в 09:33
поделиться

Существует один вызов CreateInstance , который устанавливает ненулевые нижние границы:

CreateInstance (Type, Int32 [], Int32 [])
Создает многомерный Массив указанного типа и длины измерений с указанными нижними границами.

Сравните это с:

CreateInstance (Type, Int32 [])
Создает многомерный массив указанного типа и длины измерений с нулевым значением индексирование на основе. Длина измерений указывается в массиве 32-битных целых чисел.

(Фактически, для любой другой перегрузки. Из шести перегрузок CreateInstance пять создают массив с отсчетом от нуля).

4
ответ дан 1 December 2019 в 09:33
поделиться
Другие вопросы по тегам:

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