Как скопировать одно значение пары ключей из одного словаря в другой в python - PullRequest
2 голосов
/ 24 апреля 2020

Допустим, у меня есть словарь:

mydict = {"color":"green",
          "type":"veg",
          "fruit":"apple",
          "level": 5
          }
new_dict = {}

Я бы хотел добавить ключи "цвет" и "фрукты" и их значения в new_dict. какой самый простой способ сделать это? Спасибо.

Ответы [ 5 ]

2 голосов
/ 24 апреля 2020

Вы можете попробовать это:

new_dict = {x:mydict[x] for x in mydict if x in ('color','fruit')}
0 голосов
/ 24 апреля 2020

по-другому:

expected_keys=('color', 'fruit')
for k in expected_keys:
     new_dict[k]=mydict[k]
0 голосов
/ 24 апреля 2020

самый простой способ заключается в следующем:

new_dict["color"] = mydict["color"]

однако, если у вас есть большой список предметов, которые нужно передать новому диктату, вы можете использовать следующее:

items = ["color", "fruit"]
for item in items:
    new_dict[item] = mydict[item]
0 голосов
/ 24 апреля 2020

Следующее будет работать для вашего примера.

mydict = {
    "color":"green",
    "type":"veg",
    "fruit":"apple",
    "level": 5
}
new_dict = {
    "color": mydict["color"],
    "fruit": mydict["fruit"]
}

Если вам нужно что-то более общее:

def copy_dict(original, keys=None):
    keys = keys or {key for key in original}
    return {
        key: value for key, value in original if key in keys
    }

mydict = {
    "color":"green",
    "type":"veg",
    "fruit":"apple",
    "level": 5
}
new_dict = copy_dict(mydict, {'color', 'fruit'})
0 голосов
/ 24 апреля 2020

Вы можете сохранить набор ключей, которые вы хотите добавить, а затем отфильтровать ключи с помощью словаря :

>>> keys = {"color", "fruit"}
>>> new_dict = {k: v for k, v in mydict.items() if k in keys}
>>> new_dict
{'color': 'green', 'fruit': 'apple'}

Если вы имеете дело только с двумя ключами, то or - это еще один вариант:

>>> new_dict = {k: v for k, v in mydict.items() if k == "color" or k == "fruit"}
>>> new_dict
{'color': 'green', 'fruit': 'apple'}

Преимущество использования набора в том случае, если у вас много ключей для фильтрации. Использование or может стать уродливым, если у вас более 2 ключей. Также ключи словаря являются уникальными, поэтому использование набора имеет смысл.

...