首页 新闻 搜索 专区 学院

在python中为什么s = list(i.values())[0]要加【0】

0
悬赏园豆:5 [待解决问题]

已有列表

[{"V":"S001"}, {"V": "S002"}, {"VI": "S001"}, {"VI": "S005"}, {"VII":"S005"}, {"V":"S009"},{"VIII":"S007"}]

取出列表中每个元素的字典值,并去掉重复的

预期输出:{'S001', 'S005', 'S007', 'S009', 'S002'}

list1= [{"V":"S001"}, {"V": "S002"}, {"VI": "S001"}, {"VI": "S005"}, {"VII":"S005"}, {"V":"S009"},{"VIII":"S007"}]
a=set()
for i in list1:
s = list(i.values())[0]
a.add(s)
print(a)

luckytangtang的主页 luckytangtang | 初学一级 | 园豆:197
提问于:2021-08-17 23:54
< >
分享
所有回答(4)
0

你用pdb也好,pycharm也行,断点看看每个阶段变量的值就行了;a收集的是单个元素不是列表

〆灬丶 | 园豆:945 (小虾三级) | 2021-08-18 08:52

源码 <class set>.<func add> : Add an element to a set.

支持(0) 反对(0) 〆灬丶 | 园豆:945 (小虾三级) | 2021-08-18 08:55
0

i.values() 返回一个dict_values类型变量;
list(i.values()) 把它转换成list列表["S001"],只不过是只有一个元素的列表;
为了从这个只有一个元素的列表里取出来值,所以要加[0]
断点也好,输出查看也好,都能看出来问题所在。

给给龙 | 园豆:235 (菜鸟二级) | 2021-08-18 10:44
0

因为 list(i.values()) 是类似 ['S001'] 的列表。

wang_yb | 园豆:4513 (老鸟四级) | 2021-08-18 10:45
0

你可以理解为i.values()获取到的值是一个特殊的列表。

id_iot | 园豆:252 (菜鸟二级) | 2021-08-18 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册