首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按键和值创建字典

按键和值创建字典
EN

Stack Overflow用户
提问于 2022-03-04 14:15:22
回答 1查看 59关注 0票数 1

我正在尝试创建一个字典dico,其中包含这样的元素:

代码语言:javascript
复制
<key>           <values>
comb_element     pageId1, pageId2, .. pageIdn

comb_element是元组梳列表的元素:

我尝试用这段代码来创建dico,但是我没有得到正确的dico格式。

代码语言:javascript
复制
comb=list(set(product(data['OsId'], data['BrowserId'])))
dico={}
dico[tuple(comb)] = list(data['PageId'])

这里有梳子:

代码语言:javascript
复制
[(12, 16),
 (33, 11),
 (99, 11),
 (11, 14),
 (33, 14),
 (32, 12),
 (99, 14),
 (11, 11),
 (11, 17),
 (32, 15),
 (99, 17),
 (33, 17),
 (11, 99),
 (33, 99),
 (99, 99),
 (12, 12),
 (12, 15),
 (32, 11),
 (11, 16),
 (33, 16),
 (32, 14),
 (99, 16),
 (32, 17),
 (32, 99),
 (12, 11),
 (12, 14),
 (12, 17),
 (12, 99),
 (11, 12),
 (99, 15),
 (33, 12),
 (99, 12),
 (11, 15),
 (32, 16),
 (33, 15)]

在这里,dataframe数据:在(12,16)作为键的情况下,我想将页的lis : 1005581和1016529属性化。

代码语言:javascript
复制
Cluster PageId     OsId BrowserId   
0         1005581   11  16  
0         1016529   11  16  
0         1016529   11  17  
0         1016529   12  14  
0         1016529   12  16  

例如,有什么办法来解决这个问题吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-04 15:30:26

我想下面的代码可以做你想做的事。

假设您的数据格式为dicts列表格式,您只需将'PageId‘值附加到一个以(OsId,BrowserId) tuple作为键的list中,就可以在字典list中构建条目。

这样,您就不必费心地使用product()来获得(OsId,BrowserId)的所有可能的组合,其中有些组合可能没有匹配的PageIds。

代码语言:javascript
复制
        df_as_list_of_dicts = [
            {'Cluster' : 0, 'PageId' : 1005581, 'OsId' : 11, 'BrowserId' : 16},
            {'Cluster' : 0, 'PageId' : 1016529, 'OsId' : 11, 'BrowserId' : 16},
            {'Cluster' : 0, 'PageId' : 1016529, 'OsId' : 11, 'BrowserId' : 17},
            {'Cluster' : 0, 'PageId' : 1016529, 'OsId' : 12, 'BrowserId' : 14},
            {'Cluster' : 0, 'PageId' : 1016529, 'OsId' : 12, 'BrowserId' : 16},
        ]
        dico = {}
        for row in df_as_list_of_dicts:
            tup = (row['OsId'], row['BrowserId'])
            if tup not in dico:
                dico[tup] = []
            dico[tup].append(row['PageId'])
        [print(f"{key} : {value}") for key, value in dico.items()]

样本输出:

代码语言:javascript
复制
(11, 16) : [1005581, 1016529]
(11, 17) : [1016529]
(12, 14) : [1016529]
(12, 16) : [1016529]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71352724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档