Вам нужно проанализировать текст JSON:
import json
array = json.loads(r)
print array[0]
По большей части универсальные наборы будут работать быстрее, чем неуниверсальный дубликат и приносить Вам пользу наличия набора со строгим контролем типов. Сравнение наборов, доступных в Системе. Наборы и Система. Наборы. Универсальный, Вы получаете следующую "миграцию":
Non-Generic Generic Equivalent ------------------------------------------------------------ ArrayList List<T> BitArray N/A CaseInsensitiveComparer N/A CollectionBase Collection<T> Comparer Comparer<T> DictionaryBase Dictionary<TKey,TValue> Hashtable Dictionary<TKey,TValue> Queue Queue<T> ReadOnlyCollectionBase ReadOnlyCollection<T> SortedList SortedList<TKey,TValue> Stack Stack<T> DictionaryEntry KeyValuePair<TKey,TValue> ICollection N/A (use IEnumerable<T> or anything that extends it) IComparer IComparer<T> IDictionary IDictionary<TKey,TValue> IEnumerable IEnumerable<T> IEnumerator IEnumerator<T> IEqualityComparer IEqualityComparer<T> IList IList<T>
ICollection неизменен (никакие участники для изменения содержания набора), в то время как ICollection <T> изменяем. Это делает интерфейсы подобными только номинально, в то время как ICollection и IEnumerable <T> отличаются очень мало.
Из этого списка единственными неуниверсальными классами, которые не имеют универсального дубликата, является BitArray и CaseInsensitiveComparer.
При некоторых обстоятельствах универсальные контейнеры работают лучше, чем старые. Они должны, по крайней мере, работать, а также старые при всех обстоятельствах. И они помогают поймать программные ошибки. Это - редкая комбинация более полезной абстракции и лучшей производительности, таким образом, нет большой части причины избежать их. Только если Вы вынуждены к вшивой библиотекой, необходимо работать с этим, был записан перед дженериками.
Я видел интервью с Anders Hejlsberg от c# команды, и его спросили, было ли что-нибудь, о чем он сожалел с предыдущими выпусками .NET. Наличие дженериков в asp.net 1.0 было первой вещью, которую он упомянул. Наличие его там означало, что они должны были реализовать обходные решения, которые будут придерживаться библиотек .NET и скоро станут унаследованным кодом.
Я никогда не использую Систему. Пространство имен наборов и от его оператора это, кажется, корректный путь.
О единственной плохой вещи я могу думать, когда использование Дженериков является различием, так например, если у Вас есть a List<Person>
и Вы хотите передать его методу, который берет List<object>
Вы не можете потому что List<Person>
не может быть брошен к List<object>
непосредственно.
Эта проблема решена в.NET 4.0.