Форум сайта python.su
Добрый день! Решаю задачку ниже и хочу найти причины трейсбека Keyerror
Из словаря следующего вида необходимо извлечь друзей друзей юзера
{'юзер1': [[список_друзей_юзера1], [список_игр_юзера1]], 'юзер2': [[список_друзей_юзера2], [список_игр_юзера2]], ...}
net = {'Freda': [['Olive', ' John', ' Debra'], ['Starfleet Commander', ' Ninja Hamsters', ' Seahorse Adventures']], 'Ollie': [['Mercedes', ' Freda', ' Bryant'], ['Call of Arms', ' Dwarves and Swords', ' The Movie: The Game']], 'Debra': [['Walter', ' Levi', ' Jennie', ' Robin'], ['Seven Schemers', ' Pirates in Java Island', ' Dwarves and Swords']], 'Mercedes': [['Walter', ' Robin', ' Bryant'], ['The Legend of Corgi', ' Pirates in Java Island', ' Seahorse Adventures']], 'Levi': [['Ollie', ' John', ' Walter'], ['The Legend of Corgi', ' Seven Schemers', ' City Comptroller: The Fiscal Dilemma']], 'Jennie': [['Levi', ' John', ' Freda', ' Robin'], ['Super Mushroom Man', ' Dinosaur Diner', ' Call of Arms']], 'Olive': [['John', ' Ollie'], ['The Legend of Corgi', ' Starfleet Commander']], 'John': [['Bryant', ' Debra', ' Walter'], ['The Movie: The Game', ' The Legend of Corgi', ' Dinosaur Diner']], 'Robin': [['Ollie'], ['Call of Arms', ' Dwarves and Swords']], 'Bryant': [['Olive', ' Ollie', ' Freda', ' Mercedes'], ['City Comptroller: The Fiscal Dilemma', ' Super Mushroom Man']], 'Walter': [['John', ' Levi', ' Bryant'], ['Seahorse Adventures', ' Ninja Hamsters', ' Super Mushroom Man']]}
def get_secondary_connections(net, user): secondary_connections = [] if user not in net: return None if len(net[user][0])<1: return [] for con in net[user][0]: for c in net[con][0]: if c not in secondary_connections: secondary_connections.append(c) return secondary_connections
print(get_secondary_connections(net, 'Bryant'))
Отредактировано Tetiana (Июль 13, 2019 17:40:18)
Прикреплённый файлы:
Screenshot_1.png (13,6 KБ)
Офлайн
Обратите внимание, что у вас часть строк начинается на не нужный пробел, например:
net = {'Freda': [['Olive', ' John', ' Debra'], ['Starfleet Commander', ' Ninja Hamsters', ' Seahorse Adventures']], 'Ollie': [['Mercedes', ' Freda', ' Bryant'], ['Call of Arms', ' Dwarves and Swords', ' The Movie: The Game']], 'Debra': [['Walter', ' Levi', ' Jennie', ' Robin'], ['Seven Schemers', ' Pirates in Java Island', ' Dwarves and Swords']], 'Mercedes': [['Walter', ' Robin', ' Bryant'], ['The Legend of Corgi', ' Pirates in Java Island', ' Seahorse Adventures']], 'Levi': [['Ollie', ' John', ' Walter'], ['The Legend of Corgi', ' Seven Schemers', ' City Comptroller: The Fiscal Dilemma']], 'Jennie': [['Levi', ' John', ' Freda', ' Robin'], ['Super Mushroom Man', ' Dinosaur Diner', ' Call of Arms']], 'Olive': [['John', ' Ollie'], ['The Legend of Corgi', ' Starfleet Commander']], 'John': [['Bryant', ' Debra', ' Walter'], ['The Movie: The Game', ' The Legend of Corgi', ' Dinosaur Diner']], 'Robin': [['Ollie'], ['Call of Arms', ' Dwarves and Swords']], 'Bryant': [['Olive', ' Ollie', ' Freda', ' Mercedes'], ['City Comptroller: The Fiscal Dilemma', ' Super Mushroom Man']], 'Walter': [['John', ' Levi', ' Bryant'], ['Seahorse Adventures', ' Ninja Hamsters', ' Super Mushroom Man']]}
Офлайн
>>> user = "Freda" >>> reduce(lambda x,y: x+y, ( tuple(net[x.strip()][0]) for x in ( x for x in net[user][0] ))) ('John', ' Ollie', 'Bryant', ' Debra', ' Walter', 'Walter', ' Levi', ' Jennie', ' Robin')
Офлайн
Громаднейшее спасибо, rami и Rodegast!
С функцией было все в порядке, а вот прокравшиеся пробелы мешали
Отредактировано Tetiana (Июль 14, 2019 12:08:49)
Офлайн