Функция, которую вы используете для создания names
, исключительно избыточна:
names = list(map(lambda restaurant: dict(name=restaurant['name']
).values(), yelp_restaurants))
Обрисованный вами поток управления "из list
из dict
записей, называемых yelp_restaurants
,Я хочу создать dict
каждого name
, получить значения из каждого dict
и поместить его в list
. "
Почему?Не зацикливайтесь на функциях lambda
.Начните с простого, как цикл for:
names = []
for restaurant in yelp_restaurants:
names.append(restaurant['name'])
Посмотрите, насколько это проще.Он делает именно то, что вы хотите, просто получите name
и поместите его в список.Вы можете поместить это в понимание списка:
names = [restaurant['name'] for restaurant in yelp_restaurants]
Или, если вам действительно нужно использовать lambda
, теперь гораздо проще увидеть, чего вы на самом деле хотите достичь
names = list(map(lambda x: x['name'], yelp_restaurants))
Помните, что x
в lambda x:
- это каждый элемент повторяемого yelp_restaurants
, поэтому x
- это dict
.Имея это в виду, вы используете прямой доступ к name
для извлечения того, что вы хотите.