Python: доступ к значению словаря внутри кортежа и быстрая сортировка по значению dict - PullRequest
0 голосов
/ 09 июня 2010

Я знаю, что это не ясно. Вот что я делаю конкретно. У меня есть мой список словарей здесь:

dict = [{int = 0, value = A}, {int = 1, value = B}, ... n]

и я хочу использовать их в комбинациях, поэтому я использовал itertools, и он дал мне кортеж (ну, ладно, он дал мне объект памяти, на котором я затем использовал enumerate, чтобы я мог зацикливаться на нем и перечислять дал ma tuple) :

для (индекс, кортеж) в перечислении (комбинации (dict, 2)):

и вот тут у меня проблема. Я хочу определить, какой из двух элементов в комбинации имеет большее значение 'int', а какой имеет меньшее значение, и назначить их переменным (на самом деле я использую более 2 в комбинации, поэтому я не могу просто сказать, tuple [0] ['int']> tuple [1] ['int'] и выполнить задание, потому что мне пришлось бы перечислять это несколько раз, и с этим трудно справиться).

Я собирался присвоить каждое значение 'int' переменной, отсортировать ее в списке, проиндексировать значение 'int' в списке на 1, 2, 3, 4, 5 ... и т. Д., Затем перейти вернуться и получить доступ к словарю, который я хотел, по значению int, а затем назначить словарь переменной, чтобы я знал, какая из них больше. Но у меня есть большой список, и списки и назначения переменных являются ресурсоемкими, и на это уходит много времени (у меня было написано лишь немного этого, и запуск длился вечно).

Так что я надеялся, что кто-нибудь знает быстрый способ сделать это. Я на самом деле мог бы перечислить каждую возможную комбинацию assignmnets, используя if / thens, но это как 5 страниц if / thens и назначений, и мне трудно читать и управлять, когда я хочу изменить его.

Вы, наверное, собрали это, но я новичок в программировании. Thx

1 Ответ

2 голосов
/ 09 июня 2010
for (index, tuple) in enumerate(combinations(dict, 2)):
    thesmall = min(tuple, key=lambda d: d['int'])
    thelarge = max(tuple, key=lambda d: d['int'])

Если вам нужно больше, чем просто мин и макс, тогда

    inorder = sorted(tuple, key=lambda d: d['int'])

и там у вас есть все диктовки в порядке, как требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...