Вырежьте один элемент из словаря Python - PullRequest
0 голосов
/ 02 июня 2010

У меня есть словарь:

D = { "foo" : "bar", "baz" : "bip" }

и я хочу создать новый словарь, в котором есть копия одного из его элементов k. Так что если k = "baz":

R = { "baz" : "bip" }

сейчас у меня есть:

R = { k : D[k] }

Но в моем случае k - сложное выражение, и у меня есть целая куча из них. Кэширование k во временном окружении выглядит примерно так же уродливо, как и в исходном варианте.

То, что я ищу, - это лучший (более чистый) способ сделать это.

Ответы [ 3 ]

3 голосов
/ 02 июня 2010
def take(dictionary, key):
    return {key: dictionary[key]}

R = take(D, k)
1 голос
/ 03 июня 2010

Вы не можете получить намного «чище», чем у вас есть. Предполагая, что ваше определение чистого текста содержит меньше символов.

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

Если определение «чистый» более читабельно, то это следует сделать, указав в своих словарях описательные имена (и следуя PEP-8 в соглашениях об именах).

0 голосов
/ 02 июня 2010

Так или иначе, вам понадобится набор предметов для «нарезки».

S = set(["baz"])

Если бы у вас был набор S выше, вы могли бы сделать словарь на D, чтобы получить R:

R = dict((k,v) for k,v in D.items() if k in S)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...