我有一个网页列表,例如
pages = [login, ask, profile, search]
我正忙于遍历不同的用户列表,每个用户都可以多次访问任何网页。我需要知道每个页面的访问量最大的是谁。由于其功能,我想使用字典。
这很难解释,因为我的代码中有许多嵌套结构。为简化起见,我将对问题进行措辞并尝试说明。
问题:
当遍历用户时,另一个嵌套的迭代是用户访问的网页。
users = ['tom', 'jerry', 'dexter', 'deedee', 'buttercup']
for user in users:
for session in sessions:
for page in activities:
webpage = user_visited # this can be any of the pages mentioned earlier
我需要找到一种方法来查看每个webpage
哪些user
访问它最
预期是这样的:
{ login: dexter, ask: jerry, profile: buttercup, search: tom}
我接受任何方法,请帮忙
我会维护这样的网页和用户字典:
d = {'login' : {'tom':1, 'jerry':0, 'dexter':2, 'deedee':3, 'buttercup':1},
'ask' : {'tom':0, 'jerry':0, 'dexter':3, 'deedee':2, 'buttercup':1},
'profile': {'tom':4, 'jerry':2, 'dexter':2, 'deedee':3, 'buttercup':1},
'search': {'tom':1, 'jerry':0, 'dexter':2, 'deedee':0, 'buttercup':4},
}
其中键是网页,值是用户和网页访问的字典。用户访问时,增加每页字典中的计数。然后,将最频繁的访问者吸引到每个页面很简单:
from collections import Counter
l = []
for key,dd in d.items():
c = Counter(dd)
l.append({key : c.most_common(1)[0]})
print(l)
输出:
[{'login': ('deedee', 3)}, {'ask': ('dexter', 3)}, {'profile': ('tom', 4)}, {'search': ('buttercup', 4)}]
更新:
要创建字典,d
您首先需要页面和用户列表:
pages = ['login', 'ask', 'profile', 'search']
users = ['tom', 'jerry', 'dexter', 'deedee', 'buttercup']
然后,您可以使用字典理解功能来创建字典:
d = {page: {user: 0 for user in users} for page in pages}
这里有两个for循环-一个用于迭代页面,另一个用于每个页面的用户。然后,您将获得如下结构:
{'login': {'tom': 0, 'jerry': 0, 'dexter': 0, 'deedee': 0, 'buttercup': 0},
'ask': {'tom': 0, 'jerry': 0, 'dexter': 0, 'deedee': 0, 'buttercup': 0},
'profile': {'tom': 0, 'jerry': 0, 'dexter': 0, 'deedee': 0, 'buttercup': 0},
'search': {'tom': 0, 'jerry': 0, 'dexter': 0, 'deedee': 0, 'buttercup': 0}}
之后,为每个用户更新网页访问非常简单:
d['login']['tom'] += 1
是的,这是我感兴趣的逻辑。我将如何获取
d
包含数据的字典我的问题是,我应该为迭代过程中出现的每个“新”键创建一个新键,并且该键的值应为“ 1”或附加“ 1”,所有这些在检查键是否已存在时
@LlewellynHattingh请参阅我的更新以创建和更新字典。希望能帮助到你。