Ответ 1
Извращенное желание, но вы можете получить это, используя этот
dict(islice(mydict.iteritems(), 0, 2))
или для коротких словарей
# Python 2.x
dict(mydict.items()[0:2])
# Python 3.x
dict(list(mydict.items())[0:2])
Можно ли получить частичный вид dict
в Python, аналогичный pandas df.tail()/df.head()
. Скажем, у вас очень длинный dict
, и вы просто хотите проверить некоторые элементы (начало, конец и т.д.) dict
. Что-то вроде:
dict.head(3) # To see the first 3 elements of the dictionary.
{[1,2], [2, 3], [3, 4]}
Спасибо
Извращенное желание, но вы можете получить это, используя этот
dict(islice(mydict.iteritems(), 0, 2))
или для коротких словарей
# Python 2.x
dict(mydict.items()[0:2])
# Python 3.x
dict(list(mydict.items())[0:2])
def glance(d):
return dict(itertools.islice(d.iteritems(), 3))
>>> x = {1:2, 3:4, 5:6, 7:8, 9:10, 11:12}
>>> glance(x)
{1: 2, 3: 4, 5: 6}
Однако:
>>> x['a'] = 2
>>> glance(x)
{1: 2, 3: 4, u'a': 2}
Обратите внимание, что вставка нового элемента изменила то, что "первые" три элемента были непредсказуемыми. Это то, что люди имеют в виду, когда говорят, что дикты не заказываются. Вы можете получить три элемента, если хотите, но вы не можете знать, какие три они будут.
Я знаю, что этому вопросу уже 3 года, но здесь Pythonic версия (возможно, более простая, чем описанные выше методы) для Python 3.*
:
[print(v) for i, v in enumerate(my_dict.items()) if i < n]
Он напечатает первые n
элементов словаря my_dict
однозначное решение @Neb с Python 3 пониманием:
{k: v for i, (k, v) in enumerate(my_dict.items()) if i < n}
Он возвращает дикт, а не распечатки
Из документация:
Подробности реализации CPython: Ключи и значения перечислены в произвольный порядок, который является неслучайным, варьируется в зависимости от Python реализаций и зависит от истории вложений в словарях и удаления.
В лучшем случае я только поиграл с другими реализациями Python (например, PyPy, IronPython и т.д.), поэтому я не знаю наверняка, так ли это во всех реализациях Python, но общая идея dict/hashmap/hash/etc - это то, что ключи неупорядочены.
При этом вы можете использовать OrderedDict
из библиотеки collections
. OrderedDict
запомнить порядок ключей по мере их ввода.
Если ключи сортируются некорректно, вы можете сделать это:
head = dict([(key, myDict[key]) for key in sorted(myDict.keys())[:3]])
Или, возможно:
head = dict(sorted(mydict.items(), key=lambda: x:x[0])[:3])
Где x[0]
- ключ каждой пары ключ/значение.
Для тех, кто предпочел бы решить эту проблему с pandas
dataframes. Просто mydict
ваш словарь mydict
в информационный mydict
, поверните его и получите первые несколько строк:
pd.DataFrame(mydict, index=[0]).T.head()
0 hi0 1 hi1 2 hi2 3 hi3 4 hi4
Редактировать:
в Python 3.x: без использования библиотек это можно сделать таким образом. Используйте метод:
.Предметы()
который возвращает список ключей словаря со значениями.
Необходимо преобразовать его в список, иначе произойдет ошибка: объект "my_dict" недопустим. Затем преобразуйте его в словарь. Теперь он готов нарезать квадратными скобками.
dict(list(my_dict.items())[:3])