首页 新闻 会员 周边

【python】 字典添加value值问题

0
悬赏园豆:10 [已解决问题] 解决于 2018-08-06 16:32

这是我文件的内容,我想达到的目的是一个字典,key是账号,value值是一个集合,集合里边的内容就是账号对应的课程.即我需要的内容: {1514077706:{Java开发,Python开发},1966370841:{Python开发}}

 

我写的代码如下:

less = {}
lsn = set()
file_stu = open('student_lesson', 'r', encoding='utf-8')
for line in file_stu:
    name,course = line.strip().split(':')
    lsn.add(course)
    less[name] = lsn

这样的显示结果: {1514077706:{Java开发,Python开发},1966370841:{Java开发,Python开发}}

 

尝试写的一种代码

less = {}
lsn = set()
file_stu = open('student_lesson', 'r', encoding='utf-8')
for line in file_stu:
    name,course = line.strip().split(':')
    less[name] = lsn.add(course)

但是这样写的话,每个key对应的value值都是None,达不到我预期的效果

 

请问各位大佬怎么实现我需要的那种字典

清风吹杨柳的主页 清风吹杨柳 | 初学一级 | 园豆:24
提问于:2018-08-01 11:18
< >
分享
最佳答案
1

首先{1514077706:{Java开发,Python开发},1966370841:{Python开发}} 有问题因该是{1514077706:["Java开发",",Python开发"],1966370841:["Python开发"]},你写的是字典套字点还没有value值;{}是字段,[]是列表(数组)

下面给你一个数据合并方法你看懂这个就都明白了

    def adata(self, list):
        if len(list) == 0:
            print "The list length is empty !!!"
            return

        data = {}
        for i, v in enumerate(list):
            uid = v["userid"]
            if data.has_key(uid):

                data[uid].append(list[i])
            else:

                lists = []
                lists.append(list[i])
                data[uid] = lists
        return data
收获园豆:10
DanBrown | 小虾三级 |园豆:1321 | 2018-08-01 11:32

您好,暂时是看懂了,我先实践一下,有问题了再来请教你好嘛

清风吹杨柳 | 园豆:24 (初学一级) | 2018-08-01 11:37

您好,非常感谢,请问一下这个数据合并方法在什么时候可以应用的上

清风吹杨柳 | 园豆:24 (初学一级) | 2018-08-01 11:48

@清风吹杨柳: 这个方法很实用的,也是我以前工作时候写的,可以把字典类型,通过一个标识进行数据归纳

比如说

id name age height

1  小王   18   175

2 小李    18  176

3  小赵   15  165

想找 age 一样的

{

18:[id=1的数据,id2],

15:[id=3的数据]

}

这样的

DanBrown | 园豆:1321 (小虾三级) | 2018-08-01 17:44

@DanBrown: 我的思路也是这样,但是就是实现不了.经过上一位回答者的帮助,现在思路已经很明确了,也大概懂了接下来遇到这样的问题该怎么解决

清风吹杨柳 | 园豆:24 (初学一级) | 2018-08-01 17:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册