我正在尝试创建一个字典dico,其中包含这样的元素:
<key> <values>
comb_element pageId1, pageId2, .. pageIdncomb_element是元组梳列表的元素:
我尝试用这段代码来创建dico,但是我没有得到正确的dico格式。
comb=list(set(product(data['OsId'], data['BrowserId'])))
dico={}
dico[tuple(comb)] = list(data['PageId'])这里有梳子:
[(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属性化。
Cluster PageId OsId BrowserId
0 1005581 11 16
0 1016529 11 16
0 1016529 11 17
0 1016529 12 14
0 1016529 12 16 例如,有什么办法来解决这个问题吗?谢谢
发布于 2022-03-04 15:30:26
我想下面的代码可以做你想做的事。
假设您的数据格式为dicts列表格式,您只需将'PageId‘值附加到一个以(OsId,BrowserId) tuple作为键的list中,就可以在字典list中构建条目。
这样,您就不必费心地使用product()来获得(OsId,BrowserId)的所有可能的组合,其中有些组合可能没有匹配的PageIds。
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()]样本输出:
(11, 16) : [1005581, 1016529]
(11, 17) : [1016529]
(12, 14) : [1016529]
(12, 16) : [1016529]https://stackoverflow.com/questions/71352724
复制相似问题