在Python中搜索和操作列表

2024-06-09 17:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有名单和城市,并试图编制一份名单,在每个城市的用户数量。你知道吗

我想要一个如下的列表:

citylist = (['New York', 53], ['San Francisco', 23], ['Los Angeles', 54])

等等

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

if city not in citylist:
  citylist.append([city, 1])

问题是,即使城市已经在列表中,搜索也不起作用,因为我猜它键入的是将城市与整个元素匹配,而不仅仅是元素的第一项。有人能告诉我怎么绕过那个吗?你知道吗

seocnd部分假设city在citylist中的某个地方找到,那么如何将city名称旁边的数字增加1?你知道吗

谢谢你的指导。你知道吗


Tags: 元素city列表newif数字sanyork
3条回答

使用字典或这里的^{}。列表不是此任务的适当数据结构。你知道吗

普通词典示例:

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

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

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

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()

相关问题 更多 >