Как я могу решить это - PullRequest
       21

Как я могу решить это

0 голосов
/ 09 февраля 2020

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

Заполните пробелы, чтобы объединить оба словаря в один, причем каждый друг указан только один раз, а количество гостей из словаря Рори имеет приоритет, если имя включено в оба словаря. Затем распечатайте полученный словарь.

def combine_guests(guests1, guests2):
    # Combine both dictionaries into one, with each key listed
    # only once, and the value from  guests1 taking precedence
    guests1.update(guests2)
    return guests1  

Rorys_guests = { "Adam":2, "Brenda":3, "David":1, "Jose":3, "Charlotte":2, "Terry":1, "Robert":4}
Taylors_guests = { "David":4, "Nancy":1, "Robert":2, "Adam":1, "Samantha":3, "Chris":5}
print(combine_guests(Rorys_guests, Taylors_guests))

Ответы [ 4 ]

0 голосов
/ 04 мая 2020

Самый простой способ -

    def combine_guests(guests1, guests2):
       guests2.update(guests1)
       return guests2

Помните, что гость 1 имеет преимущество, поэтому информация из guest1 заменит информацию из guest2, если они совпадают.

0 голосов
/ 09 февраля 2020

Поскольку словарю Рори следует отдавать предпочтение, вам нужно передать диктат Рори в качестве второго аргумента, а в качестве первого аргумента Тейлора:

def combine_guests(guests1, guests2):
    guests = guests1.copy()
    guests.update(guests2)
    return guests

print(combine_guests(Taylors_guests, Rorys_guests))

Теперь, если у гостей Тейлора было значение, аналогичное значению Рори, он получает обновлено. Дайте мне знать, если это работает.

0 голосов
/ 09 февраля 2020

В combine_guests приоритет будет отдан гостям2, а не гостям1. Функция update () отдает приоритет словарю, переданному в качестве аргумента. Просто вызовите функцию путем обращения аргументов.

def combine_guests(guests1, guests2):
    # Combine both dictionaries into one, with each key listed
    # only once, and the value from guests2 taking precedence
    guests1.update(guests2) # values from guests2 take precedence!
    return guests1  

Rorys_guests = { "Adam":2, "Brenda":3, "David":1, "Jose":3, "Charlotte":2, "Terry":1, "Robert":4}
Taylors_guests = { "David":4, "Nancy":1, "Robert":2, "Adam":1, "Samantha":3, "Chris":5}

print(combine_guests(Taylors_guests, Rorys_guests))
0 голосов
/ 09 февраля 2020
from copy import deepcopy

def combine_guests(guests1, guests2):
    backup = deepcopy(guests1)
    guests1.update(guests2)
    for guest in guests1:
        if guest in backup:
            guests1[guest] = backup[guest]
    return guests1

Rorys_guests = { "Adam":2, "Brenda":3, "David":1, "Jose":3, "Charlotte":2, "Terry":1, "Robert":4}
Taylors_guests = { "David":4, "Nancy":1, "Robert":2, "Adam":1, "Samantha":3, "Chris":5}

print(combine_guests(Rorys_guests, Taylors_guests))

результат будет:

{'Jose': 3, 'Brenda': 3, 'Charlotte': 2, 'Samantha': 3, 'Robert': 4, 'David': 1, 'Adam': 2, 'Nancy': 1, 'Terry': 1, 'Chris': 5}
...