2019年9月23日马蜂窝笔试题

签到用户最多的三个目的地以及签到的用户数

同一个用户多次签到同一个城市,只记一次。
签到用户数字相同的城市,优先展示按照字母表排序所得到的城市名字。

以下是输入数据,数字编号代表的是用户ID编号

123-beijing 123-shanghai 124-hongkong 124-guilin 124-guilin 125-shanghai 125-shanghai 126-nanjing

输出结果为:
最终的输出结果为:
 shanghai 2
 beijing 1
 guilin 1

#------------------------------------------------------------------------------------    


num = input()
list1 = num.split(" ")   # 按照空格进行分割开来。
list2 = list(set(list1))   # 利用集合去除重复的签到,然后再转化成列表的形式进行过存储。


city = []   # 建立城市列表,统计不同的用户的城市的访问

for i in range(len(list2)):
    city.append(list2[i].split("-")[1])


# 用字典统计城市,以及城市的访问的次数。
counts = dict()
for i in city:
    counts[i] = counts.get(i, 0) + 1

# 
# {'beijing': 1, 'hongkong': 1, 'nanjing': 1, 'shanghai': 2, 'guilin': 1}


# 下面利用字典的多条件进行排序。
# 先按照签到次数多的城市,然后按照字母顺序表进行排序。


sort2 = sorted(counts.items(), key=lambda s: (-s[1], s[0]))
for i in sort2[:3]:
    print(' '.join(map(str, list(i))))

# 打印输出结果值。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值