Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2012 23:48:58

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлеч масив ключей по значению из словаря (на базе bsddb)

Есть код:

import bsddb
dbpath = 'index.db'
db = bsddb.btopen(dbpath, 'c')
db = {'key1':'val1', 'key2':'val1', 'key3':'val2', 'key4':'val3'}
как из словаря db извлеч масив клюей
['key1', 'key2']
которым соответствует значение ‘val1’?

Отредактировано agryn (Окт. 26, 2012 23:49:23)

Офлайн

#2 Окт. 27, 2012 00:00:15

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Извлеч масив ключей по значению из словаря (на базе bsddb)

[k for k in db if db[k] == 'val1']

Офлайн

#3 Окт. 27, 2012 00:04:06

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлеч масив ключей по значению из словаря (на базе bsddb)

А типа без обхода? Все таки bsddb - БД?

Отредактировано agryn (Окт. 27, 2012 00:04:27)

Офлайн

#4 Окт. 27, 2012 07:56:52

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Извлеч масив ключей по значению из словаря (на базе bsddb)

Так же как в любой БД, завести соотв. индекс. РСУБД тоже всё подрят смотрят, если не существует индекса по рассматриваемым атрибутам.

# это псевдо-код, не стоит воспринимать буквально
index_by_val = {
    'val1': ['key1', 'key2'],
    'val2': ['key3'],
    'val3': ['key4']
}

p.s. Berkeley DB это низкоуровневая БД, если можно так выразиться. Эдакий ассемблер или Си в мире баз данных.

..bw



Отредактировано bw (Окт. 27, 2012 08:01:38)

Офлайн

#5 Окт. 27, 2012 15:40:50

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлеч масив ключей по значению из словаря (на базе bsddb)

От, спасибо за разъяснение!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version