python 嵌套列表到字典
python nested list to dictionary
将此列表转换为字典(称之为 my_dict)以便以这种方式编制索引的最佳方法是什么?
my_dict[i]['name']
my_dict[i]['stars']
my_dict[i]['price']
基本上 my_dict[0]
会给我关于 'CalaBar & Grill'
的一切。
列表如下:
[['CalaBar & Grill', '4.0 star rating', '$$'],
['Red Chili Cafe', '4.0 star rating', '$$'],
['Gus’s World Famous Fried Chicken', '4.0 star rating', '$$'],
['South City Kitchen - Midtown', '4.5 star rating', '$$'],
['Mary Mac’s Tea Room', '4.0 star rating', '$$'],
['Busy Bee Cafe', '4.0 star rating', '$$'],
['Richards’ Southern Fried', '4.0 star rating', '$$'],
['Greens & Gravy', '3.5 star rating', '$$'],
['Colonnade Restaurant', '4.0 star rating', '$$'],
['South City Kitchen Buckhead', '4.5 star rating', '$$'],
['Poor Calvin’s', '4.5 star rating', '$$'],
['Rock’s Chicken & Fries', '4.0 star rating', '$'],
['Copeland’s', '3.5 star rating', '$$']]
您可以将所需子字典的键与字典构造函数中的相应值压缩(假设您的列表存储在变量 l
中):
[dict(zip(('name', 'stars', 'price'), i)) for i in l]
这个returns:
[{'name': 'CalaBar & Grill', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Red Chili Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Gus’s World Famous Fried Chicken', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen - Midtown', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Mary Mac’s Tea Room', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Busy Bee Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Richards’ Southern Fried', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Greens & Gravy', 'stars': '3.5 star rating', 'price': '$$'}, {'name': 'Colonnade Restaurant', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen Buckhead', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Poor Calvin’s', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Rock’s Chicken & Fries', 'stars': '4.0 star rating', 'price': '$'}, {'name': 'Copeland’s', 'stars': '3.5 star rating', 'price': '$$'}]
这是一种使用列表推导式实现的方法,原版 python。假设您提供的二维列表存储在 my_list
:
keys = ['name', 'stars', 'price']
my_dict = [dict(zip(keys, values)) for values in my_list]
zip(k, v)
取两个列表并将它们映射到类似字典的结构中,以便 k
是键,每个 v
是对应的值。不过,您确实需要将结果转换为 dict
。
这应该有效:
# The list
my_list = [['CalaBar & Grill', '4.0 star rating', '$$'], \
['Red Chili Cafe', '4.0 star rating', '$$'],\
['Gus’s World Famous Fried Chicken', '4.0 star rating', '$$'],\
['South City Kitchen - Midtown', '4.5 star rating', '$$'],\
['Mary Mac’s Tea Room', '4.0 star rating', '$$'],\
['Busy Bee Cafe', '4.0 star rating', '$$'],\
['Richards’ Southern Fried', '4.0 star rating', '$$'],\
['Greens & Gravy', '3.5 star rating', '$$'],\
['Colonnade Restaurant', '4.0 star rating', '$$'],\
['South City Kitchen Buckhead', '4.5 star rating', '$$'],\
['Poor Calvin’s', '4.5 star rating', '$$'],\
['Rock’s Chicken & Fries', '4.0 star rating', '$'],\
['Copeland’s', '3.5 star rating', '$$']]
# initialize an empty list
my_dict = []
# create list of dictionary
for elem in my_list:
temp_dict = {}
temp_dict['name'] = elem[0]
temp_dict['stars'] = elem[1]
temp_dict['price'] = elem[2]
my_dict.append(temp_dict)
# testing
print(my_dict[1]['stars'])
print(my_dict[5]['price'])
print(my_dict[0]['name'])
print(my_dict[7]['stars'])
使用更简单的列表理解,您可以创建 dict
:
list = [['CalaBar & Grill', '4.0 star rating', '$$'],
['Red Chili Cafe', '4.0 star rating', '$$'],
['Gus’s World Famous Fried Chicken', '4.0 star rating', '$$'],
['South City Kitchen - Midtown', '4.5 star rating', '$$'],
['Mary Mac’s Tea Room', '4.0 star rating', '$$'],
['Busy Bee Cafe', '4.0 star rating', '$$'],
['Richards’ Southern Fried', '4.0 star rating', '$$'],
['Greens & Gravy', '3.5 star rating', '$$'],
['Colonnade Restaurant', '4.0 star rating', '$$'],
['South City Kitchen Buckhead', '4.5 star rating', '$$'],
['Poor Calvin’s', '4.5 star rating', '$$'],
['Rock’s Chicken & Fries', '4.0 star rating', '$'],
['Copeland’s', '3.5 star rating', '$$']]
my_dict = {'venues': [{'name': item[0], 'stars': item[1], 'price': item[2]} for item in list]}
my_dict_entries = my_dict['venues']
for i in range(len((my_dict_entries))):
print(my_dict_entries[i]['name'])
print(my_dict_entries[i]['stars'])
print(my_dict_entries[i]['price'])
dict
:
{"venues": [{"name": "CalaBar & Grill", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Red Chili Cafe", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Gus\u2019s World Famous Fried Chicken", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "South City Kitchen - Midtown", "rating": "4.5 star rating", "pricing": "$$"}, {"name": "Mary Mac\u2019s Tea Room", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Busy Bee Cafe", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Richards\u2019 Southern Fried", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Greens & Gravy", "rating": "3.5 star rating", "pricing": "$$"}, {"name": "Colonnade Restaurant", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "South City Kitchen Buckhead", "rating": "4.5 star rating", "pricing": "$$"}, {"name": "Poor Calvin\u2019s", "rating": "4.5 star rating", "pricing": "$$"}, {"name": "Rock\u2019s Chicken & Fries", "rating": "4.0 star rating", "pricing": "$"}, {"name": "Copeland\u2019s", "rating": "3.5 star rating", "pricing": "$$"}]}
dict_entries
:
[{'name': 'CalaBar & Grill', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Red Chili Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Gus’s World Famous Fried Chicken', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen - Midtown', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Mary Mac’s Tea Room', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Busy Bee Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Richards’ Southern Fried', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Greens & Gravy', 'stars': '3.5 star rating', 'price': '$$'}, {'name': 'Colonnade Restaurant', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen Buckhead', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Poor Calvin’s', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Rock’s Chicken & Fries', 'stars': '4.0 star rating', 'price': '$'}, {'name': 'Copeland’s', 'stars': '3.5 star rating', 'price': '$$'}]
输出[截断]:
CalaBar & Grill
4.0 star rating
$$
Red Chili Cafe
4.0 star rating
$$
Gus’s World Famous Fried Chicken
4.0 star rating
$$
South City Kitchen - Midtown
4.5 star rating
$$
...
这将为您提供更强大的 venues
dict
结构,使您能够很好地处理您的列表。例如,my_dict_entries
为您提供了您在问题中寻找的列表。
将此列表转换为字典(称之为 my_dict)以便以这种方式编制索引的最佳方法是什么?
my_dict[i]['name']
my_dict[i]['stars']
my_dict[i]['price']
基本上 my_dict[0]
会给我关于 'CalaBar & Grill'
的一切。
列表如下:
[['CalaBar & Grill', '4.0 star rating', '$$'],
['Red Chili Cafe', '4.0 star rating', '$$'],
['Gus’s World Famous Fried Chicken', '4.0 star rating', '$$'],
['South City Kitchen - Midtown', '4.5 star rating', '$$'],
['Mary Mac’s Tea Room', '4.0 star rating', '$$'],
['Busy Bee Cafe', '4.0 star rating', '$$'],
['Richards’ Southern Fried', '4.0 star rating', '$$'],
['Greens & Gravy', '3.5 star rating', '$$'],
['Colonnade Restaurant', '4.0 star rating', '$$'],
['South City Kitchen Buckhead', '4.5 star rating', '$$'],
['Poor Calvin’s', '4.5 star rating', '$$'],
['Rock’s Chicken & Fries', '4.0 star rating', '$'],
['Copeland’s', '3.5 star rating', '$$']]
您可以将所需子字典的键与字典构造函数中的相应值压缩(假设您的列表存储在变量 l
中):
[dict(zip(('name', 'stars', 'price'), i)) for i in l]
这个returns:
[{'name': 'CalaBar & Grill', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Red Chili Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Gus’s World Famous Fried Chicken', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen - Midtown', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Mary Mac’s Tea Room', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Busy Bee Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Richards’ Southern Fried', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Greens & Gravy', 'stars': '3.5 star rating', 'price': '$$'}, {'name': 'Colonnade Restaurant', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen Buckhead', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Poor Calvin’s', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Rock’s Chicken & Fries', 'stars': '4.0 star rating', 'price': '$'}, {'name': 'Copeland’s', 'stars': '3.5 star rating', 'price': '$$'}]
这是一种使用列表推导式实现的方法,原版 python。假设您提供的二维列表存储在 my_list
:
keys = ['name', 'stars', 'price']
my_dict = [dict(zip(keys, values)) for values in my_list]
zip(k, v)
取两个列表并将它们映射到类似字典的结构中,以便 k
是键,每个 v
是对应的值。不过,您确实需要将结果转换为 dict
。
这应该有效:
# The list
my_list = [['CalaBar & Grill', '4.0 star rating', '$$'], \
['Red Chili Cafe', '4.0 star rating', '$$'],\
['Gus’s World Famous Fried Chicken', '4.0 star rating', '$$'],\
['South City Kitchen - Midtown', '4.5 star rating', '$$'],\
['Mary Mac’s Tea Room', '4.0 star rating', '$$'],\
['Busy Bee Cafe', '4.0 star rating', '$$'],\
['Richards’ Southern Fried', '4.0 star rating', '$$'],\
['Greens & Gravy', '3.5 star rating', '$$'],\
['Colonnade Restaurant', '4.0 star rating', '$$'],\
['South City Kitchen Buckhead', '4.5 star rating', '$$'],\
['Poor Calvin’s', '4.5 star rating', '$$'],\
['Rock’s Chicken & Fries', '4.0 star rating', '$'],\
['Copeland’s', '3.5 star rating', '$$']]
# initialize an empty list
my_dict = []
# create list of dictionary
for elem in my_list:
temp_dict = {}
temp_dict['name'] = elem[0]
temp_dict['stars'] = elem[1]
temp_dict['price'] = elem[2]
my_dict.append(temp_dict)
# testing
print(my_dict[1]['stars'])
print(my_dict[5]['price'])
print(my_dict[0]['name'])
print(my_dict[7]['stars'])
使用更简单的列表理解,您可以创建 dict
:
list = [['CalaBar & Grill', '4.0 star rating', '$$'],
['Red Chili Cafe', '4.0 star rating', '$$'],
['Gus’s World Famous Fried Chicken', '4.0 star rating', '$$'],
['South City Kitchen - Midtown', '4.5 star rating', '$$'],
['Mary Mac’s Tea Room', '4.0 star rating', '$$'],
['Busy Bee Cafe', '4.0 star rating', '$$'],
['Richards’ Southern Fried', '4.0 star rating', '$$'],
['Greens & Gravy', '3.5 star rating', '$$'],
['Colonnade Restaurant', '4.0 star rating', '$$'],
['South City Kitchen Buckhead', '4.5 star rating', '$$'],
['Poor Calvin’s', '4.5 star rating', '$$'],
['Rock’s Chicken & Fries', '4.0 star rating', '$'],
['Copeland’s', '3.5 star rating', '$$']]
my_dict = {'venues': [{'name': item[0], 'stars': item[1], 'price': item[2]} for item in list]}
my_dict_entries = my_dict['venues']
for i in range(len((my_dict_entries))):
print(my_dict_entries[i]['name'])
print(my_dict_entries[i]['stars'])
print(my_dict_entries[i]['price'])
dict
:
{"venues": [{"name": "CalaBar & Grill", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Red Chili Cafe", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Gus\u2019s World Famous Fried Chicken", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "South City Kitchen - Midtown", "rating": "4.5 star rating", "pricing": "$$"}, {"name": "Mary Mac\u2019s Tea Room", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Busy Bee Cafe", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Richards\u2019 Southern Fried", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "Greens & Gravy", "rating": "3.5 star rating", "pricing": "$$"}, {"name": "Colonnade Restaurant", "rating": "4.0 star rating", "pricing": "$$"}, {"name": "South City Kitchen Buckhead", "rating": "4.5 star rating", "pricing": "$$"}, {"name": "Poor Calvin\u2019s", "rating": "4.5 star rating", "pricing": "$$"}, {"name": "Rock\u2019s Chicken & Fries", "rating": "4.0 star rating", "pricing": "$"}, {"name": "Copeland\u2019s", "rating": "3.5 star rating", "pricing": "$$"}]}
dict_entries
:
[{'name': 'CalaBar & Grill', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Red Chili Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Gus’s World Famous Fried Chicken', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen - Midtown', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Mary Mac’s Tea Room', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Busy Bee Cafe', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Richards’ Southern Fried', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'Greens & Gravy', 'stars': '3.5 star rating', 'price': '$$'}, {'name': 'Colonnade Restaurant', 'stars': '4.0 star rating', 'price': '$$'}, {'name': 'South City Kitchen Buckhead', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Poor Calvin’s', 'stars': '4.5 star rating', 'price': '$$'}, {'name': 'Rock’s Chicken & Fries', 'stars': '4.0 star rating', 'price': '$'}, {'name': 'Copeland’s', 'stars': '3.5 star rating', 'price': '$$'}]
输出[截断]:
CalaBar & Grill
4.0 star rating
$$
Red Chili Cafe
4.0 star rating
$$
Gus’s World Famous Fried Chicken
4.0 star rating
$$
South City Kitchen - Midtown
4.5 star rating
$$
...
这将为您提供更强大的 venues
dict
结构,使您能够很好地处理您的列表。例如,my_dict_entries
为您提供了您在问题中寻找的列表。