将多个列表转换成字典

时间:2020-06-04 06:47:16

标签: python list dictionary

我要转换以下内容

Input: Name;class;subject;grade
       sam;4;maths;A
       tom;5;science;B
       kathy;8;biology;A
       nancy;9;maths;B
output: [Name:sam,class:4,subject: maths, grade:A],[name:tom,class:5,subject:science,grade:B],[name: kathy,class:8,subject:biology,grade:B],[name:nancy,class:9,subject:maths,grade:B] 

3 个答案:

答案 0 :(得分:0)

您可以创建一个接受字符串的函数,使每条数据都用诸如:或;之类的字符分隔。 然后您可以使用

string.split("the character you used")

获取列表中存储的每个数据的列表。

最后,您可以将这些元素中的每一个存储在字典中,并将该字典追加到要作为输出的列表中。

我在python shell中使用的这段代码将帮助您更好地理解这些操作。

>>> input_string = "Tom:6:Maths"
>>> list_of_elements = input_string.split(":")
>>> container_dictioanry = {"Name":list_of_elements[0], "class":list_of_elements[1], "grade":list_of_elements[2]}
>>> output_list = []
>>> output_list.append(container_dictioanry)
>>> print(output_list)
[{'Name': 'Tom', 'class': '6', 'grade': 'Maths'}]

答案 1 :(得分:0)

基本上,您只是带有分隔符;的csv文本块

它可以很简单:

input_text = '''<YOUR DATA>'''
lines = input_text.split('\n')
headers = lines[0].split(';')
output = [
    dict(zip(headers, line.split(';')))
    for line in lines[1:]
]

答案 2 :(得分:0)

由于文本为CSV,因此您可以使用csv库。

>>> import csv
>>>
>>>
>>> foo = '''Name;class;subject;grade
... sam;4;maths;A
... tom;5;science;B
... kathy;8;biology;A
... nancy;9;maths;B'''
>>>
>>> reader = csv.DictReader(foo.splitlines(), delimiter=';')
>>> print([row for row in reader])
[{'Name': 'sam', 'class': '4', 'subject': 'maths', 'grade': 'A'}, {'Name': 'tom', 'class': '5', 'subject': 'science', 'grade': 'B'}, {'Name': 'kathy', 'class': '8', 'subject': 'biology', 'grade': 'A'}, {'Name': 'nancy', 'class': '9', 'subject': 'maths', 'grade': 'B'}]