我有名字和城市的列表,并试图编辑每个城市的用户数量的列表。
我想要一个列表,看起来像这样:
citylist = (['New York', 53], ['San Francisco', 23], ['Los Angeles', 54])等。
我遇到的第一个问题是,当我从文件中读取新行时,我需要检查该城市是否已经存在。如果没有,那么我需要添加它并给它一个数字1。所以我尝试了:
if city not in citylist:
citylist.append([city, 1])这样做的问题是,即使城市已经在列表中,搜索也不起作用,因为我猜它是在键入将城市与整个元素匹配,而不仅仅是元素的第一项。有没有人能告诉我怎么解决这个问题?
seocnd部分是假设城市列表中的某个地方找到了城市,那么如何将城市名称旁边的数字递增1呢?
感谢您的指导。
发布于 2014-01-07 23:16:47
在这里使用字典或collections.Counter。列表不是适合此任务的数据结构。
普通字典示例:
citydict = {'New York': 53,
'San Francisco': 23,
'Los Angeles': 54}现在只需像这样更新字典:
for line in file_obj:
city = #do something with line
citydict[city] = citydict.get(city, 0) + 1发布于 2014-01-07 23:16:28
python dict是您想要实现的一种合适的数据结构。使用defaultdict(int),您还可以为给定的城市(dict的关键字)直接递增,即使它还没有出现在dict中。
发布于 2014-01-07 23:19:30
使用字典来维护计数器以下是示例代码:
citydict = {}
all_cities = open("cities.txt", "r").readlines()
for city in all_cities:
if citydict.has_key(city):
citydict[city] +=1
else:
citydict[city] = 1
print citydict.items()https://stackoverflow.com/questions/20975164
复制相似问题