У меня есть список, содержащий словари

[{'Name of Business' : 'Amazon', 'Contact Name' : 'Jeff Bezos', 'Email' : 'Jeff@Amazon.com'},
 { {'Name of Business' : 'Microsoft', 'Contact Name' : 'Bill Gates', 'Email' : 'Bill@Microsoft.com'}]

Позже мне нужно будет сохранить каждое имя компании, контактное лицо и т. Д. В переменной или у меня будет простой способ вызвать их для повторного использования.

Я обнаружил, что используя что-то вроде

for x in dict_list:
   print x["Client"], x['Contact Name'], x['Email']

Дает мне распечатку всех данных:
Amazon Джефф Безос Джефф@Amazon.com
Microsoft Билл Гейтс Билл@Microsoft.com

Но что, если я просто хочу получить информацию из первой записи?
Что если я хочу сохранить данные из каждой словарной статьи в отдельную переменную?

С помощью

 first_entry = dict_list[0]  
 print first_entry["Client"], first_entry['Contact Name'], first_entry['Email']

Но должен быть какой-то способ сделать это в одной строке, не создавая сначала другую переменную?

Спасибо за любую помощь, которую я могу получить!

0
Shiroslullaby 17 Дек 2015 в 17:33

4 ответа

Лучший ответ

Просто не создавайте переменную:

print dict_list[0]["Client"], dict_list[0]['Contact Name'], dict_list[0]['Email']

Или в цикле:

idx = [1]
for i in idx:
    print dict_list[i]["Client"], dict_list[i]['Contact Name'], dict_list[i]['Email']
1
tglaria 17 Дек 2015 в 14:36

Ваша проблема - структура, которую вы используете для хранения данных. Я бы порекомендовал использовать фрейм данных pandas для обработки ваших данных в соответствии с необходимыми вам операциями:

import pandas as pd

df = pd.DataFrame(l)
#Out[5]: 
#  Contact Name               Email Name of Business
#0   Jeff Bezos     Jeff@Amazon.com           Amazon
#1   Bill Gates  Bill@Microsoft.com        Microsoft

Каждая словарная запись соответствует столбцу. Вы можете получить доступ к первой записи в виде серии:

df['Name of Business']         
#Out[9]: 
#0       Amazon
#1    Microsoft
#Name: Name of Business, dtype: object

Или в виде списка:

df['Name of Business'].tolist()
#Out[8]: ['Amazon', 'Microsoft']
1
Colonel Beauvel 17 Дек 2015 в 14:38

Что если я хочу сохранить данные из каждой словарной статьи в отдельную переменную?

Для этого вы можете использовать понимание списка или map(), например, для первого элемента списка:

client, contact, email = map(dict_list[0].get, ("Client", "Contact Name", "Email"))
1
Eugene Yarmash 17 Дек 2015 в 14:40
print dict_list[0]["Client"], dict_list[0]['Contact Name'], dict_list[0]['Email']
1
DainDwarf 17 Дек 2015 в 14:34