鱼C论坛

 找回密码
 立即注册
查看: 2416|回复: 4

[已解决]列表转字典 中一些疑惑

[复制链接]
发表于 2023-1-15 16:12:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

原始数据

[[1,100],[2,90],[2,95],[1,70]]

转换为

{1:[100,70],2:[90,95]}

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


  1. dt = [[1,100],[2,90],[2,95],[1,70]]

  2. dtrc = {}



  3. for i in dt:

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






  9. print(dtrc)
复制代码



{1: [70], 2: [95]}    这是错误的输出结果
最佳答案
2023-1-15 16:19:25
本帖最后由 tommyyu 于 2023-1-15 16:24 编辑
  1. l = [[1,100],[2,90],[2,95],[1,70]]
  2. d = {}
  3. for i in l:
  4.     d[i[0]] = d.get(i[0], []) + [i[1]] # d.get(i[0], []) get函数见下,表示访问 i[0],如果不存在则返回 []
  5.                                                  # + i[1] 将 i[1] 加入该列表
  6. print(d)
复制代码

dict.get(key, default) 函数 --- 访问 key 键所对应的值,如果不存在则返回 default
  1. >>> a = {1:1, 2:2, 3:3}
  2. >>> a.get(1, '木有')
  3. 1
  4. >>> a.get(4, '木有')
  5. '木有'
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-15 16:19:25 | 显示全部楼层    本楼为最佳答案   
本帖最后由 tommyyu 于 2023-1-15 16:24 编辑
  1. l = [[1,100],[2,90],[2,95],[1,70]]
  2. d = {}
  3. for i in l:
  4.     d[i[0]] = d.get(i[0], []) + [i[1]] # d.get(i[0], []) get函数见下,表示访问 i[0],如果不存在则返回 []
  5.                                                  # + i[1] 将 i[1] 加入该列表
  6. print(d)
复制代码

dict.get(key, default) 函数 --- 访问 key 键所对应的值,如果不存在则返回 default
  1. >>> a = {1:1, 2:2, 3:3}
  2. >>> a.get(1, '木有')
  3. 1
  4. >>> a.get(4, '木有')
  5. '木有'
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-15 16:21:58 | 显示全部楼层

我已经不够聪明了,我还以为我想得多一点可以弥补
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-15 16:23:47 | 显示全部楼层
tommyyu 发表于 2023-1-15 16:19
dict.get(key, default) 函数 --- 访问 key 键所对应的值,如果不存在则返回 default

我的想法是我不加值,让他值为None,我再加个if判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-15 16:25:48 | 显示全部楼层
本帖最后由 tommyyu 于 2023-1-15 16:27 编辑
jcpython2 发表于 2023-1-15 16:23
我的想法是我不加值,让他值为None,我再加个if判断


可是你只在没有的时候(if dtrc[i[0]] == None)进行了加入,在其他情况没有添加,而且在第十行对数据进行了覆盖,这导致只有最后一次的数据被写了进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 17:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表