为了账号安全,请及时绑定邮箱和手机立即绑定

Python 字典应该返回一个值而不是 None

Python 字典应该返回一个值而不是 None

撒科打诨 2022-06-14 17:54:54
我有一个 csv 文件,其中包含 a,b2,34,54,74,7(其中 a,b 是列值)下面我有两个函数,其中第一个函数将读取 csv 并将“a”分配为键,将“b”分配为字典中的值第二个函数我将'a'值作为参数传递,当我使用该函数时它返回b作为值。如果'a'没有值,我得到None。def x (id):    dict1= {}    with open(file, 'r', encoding='utf') as f:        for i in csv.DictReader(f, skipinitialspace= True)        dict1[i['a']] = row['b']    print('im happy now' )def getx (a):    return dict1.get(a, None)它完美地工作。现在我有一个包含四列值的 csv 文件a,b,c,d1,2,r,42,g,4,63,d,4,6为此,我编写了类似的代码def x ():    dict1= {}    with open(file, 'r', encoding='utf') as f:        for i in csv.DictReader(f, skipinitialspace= True)        dict1[i['a']] = dict(dict1[i['b']] = dict(dict1[i['c']] = row['d']))    print('im happy now' )def getx (a):    return dict1.get(dict1['a']['b']['c'], None)我的逻辑是显示dict1[i['a']] = dict(dict1[i['b']] = dict(dict1[i['c']] = row['d']))作为dict1 :{   'a':{       'b':{           'c':2,           'c':4,           'c':4       }   }}我不确定我上面写的是否正确。当我通过 dict1[a[]b][c] 时,我需要将 'd' 作为值返回。它返回我的空值。期望值是 a,b,ci 的组合需要一个值作为 d。例如:从上面的 csv.. 对于 1,2,ri 的组合需要返回 4 作为输出更新:我意识到“a”列具有重复值,并且无法在跳过重复键记录的字典键中处理。from collections import defaultdictdict_1 = defaultdict(list)with open('file.txt','r') as f:    for r in f.readline():        i= r['a']        j= r['b']        k= r['c']        l =r['d']        details = [j,k,l]        dict_1[i].append((details))        print(dict_1)这给了我{'1' :[('k', '3', '5'),('e','3','2')], '4' :[('r','3','2'),('e','2','1')],....................}如果我在上面的第一个函数中有 dict_1 。现在,任何建议,例如如何通过在我的第二个函数中传递 a、b、c 作为参数来获取“d”的值,否则没有?
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您不需要 csv 模块。此外,您不能在字典中有重复的键,您只会覆盖以前设置的值。


def x():

    dict1= {}

    with open(file, 'r', encoding='utf') as f:

        for i in f.readlines():

            a, b, c, d = i.split(',')

            dict1[a] = {b: {c: d}}


def getx(a, b, c):

    try:

        return dict1[a][b][c]

    except:

        return None


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信