使用两个项作为键来创建字典python

man*_*ing 16 python

可能重复:
如何将具有多个键的字典创建为一个值?

我有5列数据,

 usermac, useragent, area ,videoid, number of requests
Run Code Online (Sandbox Code Playgroud)

我想使用(usermac,useragent)作为创建字典的关键字,因为(usermac,useragent)的唯一组合代表一个唯一的用户.

所以字典就像:

 usermac1, useragent1: area1, videoid1, 10
                       area1, videoid2, 29
 usermac1, useragent2: area1, videoid1, 90
                       area1, videoid2, 34

                        ...
Run Code Online (Sandbox Code Playgroud)

我只知道如何创建只有一个项目作为键的字典.有人可以帮忙吗?

我的代码是:

    for line in fd_in.readlines():
        (mac, useragent, area, videoid, reqs) = line.split()

    video_dict = d1.setdefault((mac,useragent) {})
    video_dict.setdefault(videoid, []).append(float(reqs))
Run Code Online (Sandbox Code Playgroud)

它有语法错误:

    video_dict = d1.setdefault((mac,useragent) {})
Run Code Online (Sandbox Code Playgroud)

Aco*_*orn 35

您可以使用任何(可散列)对象作为python字典的键,因此只需使用包含这两个值的元组作为键.

  • 只要看看你是否打算序列化字典.例如,`json.dumps(mydict)`将失败. (2认同)

n00*_*dle 21

我相信你可以使用元组作为字典的关键.所以你有

mydict = {}
mydict[(usermac1,useragent1)] = [ [area1, videoid1, 10],[area1,videoid2,29]... ]
Run Code Online (Sandbox Code Playgroud)