jcpython2 发表于 2023-1-15 16:12:44

列表转字典 中一些疑惑

本帖最后由 jcpython2 于 2023-1-15 16:18 编辑

原始数据

[,,,]

转换为

{1:,2:}

我的思路 第一次创建字典key加入value下次循环判断如果已经有value就append


dt = [,,,]

dtrc = {}



for i in dt:

    #dtrc] = dtrc.get('i',])
    dtrc] = dtrc.get('i')
    if dtrc] == None:   #判断这个key是否存在value 没就append
      dtrc]= []
      dtrc].append(i)






print(dtrc)


{1: , 2: }    这是错误的输出结果

tommyyu 发表于 2023-1-15 16:19:25

本帖最后由 tommyyu 于 2023-1-15 16:24 编辑

l = [,,,]
d = {}
for i in l:
    d] = d.get(i, []) + ] # d.get(i, []) get函数见下,表示访问 i,如果不存在则返回 []
                                                 # + i 将 i 加入该列表
print(d)

dict.get(key, default) 函数 --- 访问 key 键所对应的值,如果不存在则返回 default
>>> a = {1:1, 2:2, 3:3}
>>> a.get(1, '木有')
1
>>> a.get(4, '木有')
'木有'

jcpython2 发表于 2023-1-15 16:21:58

tommyyu 发表于 2023-1-15 16:19


我已经不够聪明了,我还以为我想得多一点可以弥补

jcpython2 发表于 2023-1-15 16:23:47

tommyyu 发表于 2023-1-15 16:19
dict.get(key, default) 函数 --- 访问 key 键所对应的值,如果不存在则返回 default

我的想法是我不加值,让他值为None,我再加个if判断

tommyyu 发表于 2023-1-15 16:25:48

本帖最后由 tommyyu 于 2023-1-15 16:27 编辑

jcpython2 发表于 2023-1-15 16:23
我的想法是我不加值,让他值为None,我再加个if判断

可是你只在没有的时候(if dtrc] == None)进行了加入,在其他情况没有添加,而且在第十行对数据进行了覆盖,这导致只有最后一次的数据被写了进去
页: [1]
查看完整版本: 列表转字典 中一些疑惑