使用Lis创建字典

2024-06-13 15:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建包含以下数据的词典:

ListA = ['Name', 'Age', 'Gender']
ListB = ['Alex', '22', 'Male']
        ['Kelly','21', 'Female']

ListB来自FileB,如下所示:

Alex 22 Male,Kelly 21 Female(值以制表符分隔,组以逗号分隔)

预期产量:

{'Name' : 'Alex', 'Age' : '22', 'Gender' : 'Male',
 'Name' : 'Kelly', 'Age': '21', 'Gender' : 'Female'
}

我尝试了以下代码:

fileB = glob.glob(filename + '.txt')
dfun = {}
ListB = []
for f in fileB:
    Lines = open(f, 'r').read().split(',')
    for i in Lines:
        Lines2 = i.split('\t')
        ListB.append(Lines2)
print(ListB)   # this gives me ListB in the format above. 

for i in ListB:
    List1 = ['Name', 'Age', 'Gender']
    List2 = i
    zip1 = zip(List1,i)
    zip2 = dict(zip1)
    dfun.update(zip2)
    print(dfun)

此代码仅给出以下输出:

{'Name' : 'Kelly', 'Age': '21', 'Gender' : 'Female'}

Tags: 代码nameinforagegendermalefemale
1条回答
网友
1楼 · 发布于 2024-06-13 15:38:47

所需的输出是无效的字典,因为字典不能包含重复的键,但是,您可以使用列表理解并将字典值存储为列表中的元素:

ListA = ['Name', 'Age', 'Gender']
ListB = [['Alex', '22', 'Male'], ['Kelly','21', 'Female']]
result = [dict(zip(ListA, i)) for i in ListB]

输出:

[{'Name': 'Alex', 'Age': '22', 'Gender': 'Male'}, {'Name': 'Kelly', 'Age': '21', 'Gender': 'Female'}]

编辑:

result = {a:[k[i] for k in ListB] for i, a in enumerate(ListA)}

输出:

{'Name': ['Alex', 'Kelly'], 'Age': ['22', '21'], 'Gender': ['Male', 'Female']}

相关问题 更多 >