在python列表中映射公共数据

在python列表中映射公共数据,python,python-3.x,list,csv,dictionary,Python,Python 3.x,List,Csv,Dictionary,我正在使用DictReader()读取csv文件,该文件的数据如下所示 NAMES,DATA Name1,abcd Name1,efgh Name1,fgdh Name2,xjbjk Name2,flfnd 我正在读它,并把它分为两部分 L1 = ['Name1','Name1','Name1','Name2','Name2'] L2 = ['abcd','efgh','fgdh','xjbjk','flfnd'] 但我希望Name1与其对应的数据进行映射,如下所示(或以其他格式,以便我可

我正在使用
DictReader()
读取csv文件,该文件的数据如下所示

NAMES,DATA
Name1,abcd
Name1,efgh
Name1,fgdh
Name2,xjbjk
Name2,flfnd
我正在读它,并把它分为两部分

L1 = ['Name1','Name1','Name1','Name2','Name2']

L2 = ['abcd','efgh','fgdh','xjbjk','flfnd']
但我希望Name1与其对应的数据进行映射,如下所示(或以其他格式,以便我可以迭代该数据以获取特定值)

有人能提出任何方法来进行这项工作吗


提前谢谢

DictReader
为您提供一个dict开始。逐行建立结果,而不是将输入分成两个列表

import collections
from operator import itemgetter

result = collections.defaultdict(list)
get_pair = itemgetter("NAME", "DATA")

with open("tmp.csv") as f:
    d = csv.DictReader(f)
    for row in d:
        name, value = get_pair(result)
        result[name].append(value)
defaultdict
确保当您第一次尝试使用
name
作为键时,
result[name]
是一个列表
get\u pair
是与

def get_pair(d):
    return d["NAME"], d["DATA"]

假设你已经有了两张清单

L1 = ['Name1','Name1','Name1','Name2','Name2']
L2 = ['abcd','efgh','fgdh','xjbjk','flfnd']
这项工作:

d = {}
for k, v in zip(L1, L2):
    d.setdefault(k, []).append(v)
像这样:

>>> d
{'Name1': ['abcd', 'efgh', 'fgdh'], 'Name2': ['xjbjk', 'flfnd']}

请在问题中发表您的尝试。我建议创建一个字典,并使用名称作为键将每个值附加到字典中存储的列表中。这里的defaultdict是什么?这是我需要定义的字典吗?因为我收到错误:-NameError:name'defaultdict'未定义抱歉,这就是导入
集合
模块的原因。固定的
>>> d
{'Name1': ['abcd', 'efgh', 'fgdh'], 'Name2': ['xjbjk', 'flfnd']}