У меня есть несколько словарей с предсказуемым именем. Каждый словарь содержит 3 элемента. Как я могу извлечь конкретный ключ из каждого словаря и найти общее значение?

player_A = {
   "kills": 15
   "death": 3
   "kda": 5
}

player_B = {
   "kills": 20
   "death": 4
   "kda": 5
}
:
player_ZA = {
   "kills": 35
   "death": 7
   "kda": 5
}

Допустим, я хотел найти общее количество убийств всех игроков. Как мне получить доступ ко всем ключам с именем «kill» в словарях и найти общую сумму этих ключей?

То есть . Ожидаемый результат - что-то вроде:

sum(15 + 20 + ... + 35)
2
Ong Zhi Wei 30 Июн 2019 в 12:27

4 ответа

Лучший ответ

Попробуй это:

player_A = {"kills": 15, "death": 3, "kda": 5}

player_B = {"kills": 20, "death": 4, "kda": 5}

player_ZA = {"kills": 35, "death": 7, "kda": 5}


def f(x):
    result = 0
    for key, value in x.items():
        if key.startswith("player"):
            result += value["kills"]
    return result


print(f(globals()))

Или этот:

player_A = {"kills": 15, "death": 3, "kda": 5 }

player_B = { "kills": 20, "death": 4, "kda": 5 }

player_ZA = { "kills": 35, "death": 7, "kda": 5 }


def f(x):
    return sum(value["kills"] for key, value in x.items() if key.startswith("player"))


print(f(globals()))

0
dildeolupbiten 30 Июн 2019 в 10:02

Вы также можете сделать это: -

player_a = {"kills": 15, "death": 3, "kda": 5}
player_b = {"kills": 20, "death": 4, "kda": 5}
player_c = {"kills": 35, "death": 7, "kda": 5}
player_d = {'death':5}  # If dictionary does not contains 'kills' key.

players = [player_a , player_b , player_c, player_d]

l = []
for player in players:
    try:
        l.append(player['kills'])

    except Exception as e:
        continue
print(f"Total kills are {sum(l)}") 

< Сильный > Выход

Total kills are 70

Я надеюсь, что вы узнаете что-то новое.

0
Rahul charan 30 Июн 2019 в 10:48
player_a = {"kills": 15, "death": 3, "kda": 5}
player_b = {"kills": 20, "death": 4, "kda": 5}
player_c = {"kills": 35, "death": 7, "kda": 5}

players = [player_a, player_b, player_c]

total_kills = sum(player["kills"] for player in players)
2
user10987432 30 Июн 2019 в 10:22

Вот еще один способ (функциональное программирование) для суммирования значений "kills":

player_A = {"kills": 15, "death": 3, "kda": 5}

player_B = {"kills": 20, "death": 4, "kda": 5}

player_ZA = {"kills": 35, "death": 7, "kda": 5}


f = lambda x: sum(map(lambda j: x[j]["kills"], filter(lambda i: i.startswith("player"), x)))


print(f(globals()))
0
dildeolupbiten 30 Июн 2019 в 12:16