首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中搜索和操作列表中的列表

在Python中搜索和操作列表中的列表
EN

Stack Overflow用户
提问于 2014-01-07 23:13:31
回答 4查看 74关注 0票数 0

我有名字和城市的列表,并试图编辑每个城市的用户数量的列表。

我想要一个列表,看起来像这样:

代码语言:javascript
复制
citylist = (['New York', 53], ['San Francisco', 23], ['Los Angeles', 54])

等。

我遇到的第一个问题是,当我从文件中读取新行时,我需要检查该城市是否已经存在。如果没有,那么我需要添加它并给它一个数字1。所以我尝试了:

代码语言:javascript
复制
if city not in citylist:
  citylist.append([city, 1])

这样做的问题是,即使城市已经在列表中,搜索也不起作用,因为我猜它是在键入将城市与整个元素匹配,而不仅仅是元素的第一项。有没有人能告诉我怎么解决这个问题?

seocnd部分是假设城市列表中的某个地方找到了城市,那么如何将城市名称旁边的数字递增1呢?

感谢您的指导。

EN

回答 4

Stack Overflow用户

发布于 2014-01-07 23:16:47

在这里使用字典或collections.Counter。列表不是适合此任务的数据结构。

普通字典示例:

代码语言:javascript
复制
citydict = {'New York': 53,
            'San Francisco': 23,
            'Los Angeles': 54}

现在只需像这样更新字典:

代码语言:javascript
复制
for line in file_obj:
    city = #do something with line
    citydict[city] = citydict.get(city, 0) + 1
票数 3
EN

Stack Overflow用户

发布于 2014-01-07 23:16:28

python dict是您想要实现的一种合适的数据结构。使用defaultdict(int),您还可以为给定的城市(dict的关键字)直接递增,即使它还没有出现在dict中。

票数 1
EN

Stack Overflow用户

发布于 2014-01-07 23:19:30

使用字典来维护计数器以下是示例代码:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20975164

复制
相关文章

相似问题

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