Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中搜索字典中的值_Python_List_Csv - Fatal编程技术网

如何在python中搜索字典中的值

如何在python中搜索字典中的值,python,list,csv,Python,List,Csv,我有一个大的csv文件,格式如下: CSV文件1 id, person, city 1, John, NY 2, Lucy, Miami 3, Smith, Los Angeles 4, Mike, Chicago 5, David, Los Angeles 6, Daniel, NY 在另一个CSV文件中,每个城市都有一个数字代码: CSV文件2 city , code NY , 100 Miami, 101 Los An

我有一个大的csv文件,格式如下:

CSV文件1

id, person,   city
1,   John,     NY
2,   Lucy,    Miami
3,   Smith,   Los Angeles
4,   Mike,    Chicago
5,   David,   Los Angeles
6,   Daniel,    NY
在另一个CSV文件中,每个城市都有一个数字代码:

CSV文件2

city , code
NY   ,  100
Miami,  101
Los Angeles, 102
Chicago, 103
我需要做的是浏览城市栏中的CSV文件1,读取城市名称并从CSV文件2中获取该城市的数字代码。然后我就可以把城市代码列表输出到一个文本文件中。对于本例,我将得到以下结果:

100
101
102
103
102
100
我使用csv.DictReader为每个文件创建字典,但我一直在试图找到一种方法将每个城市映射到每个代码


任何正确方向的想法或建议都将不胜感激

这里有一些额外的空白,与某些存储格式不同,CSV确实关心它。如果源数据中确实存在这些内容,则可能必须先将其删除,然后才能按预期进行处理(否则,各个字段将有前导和尾随空格)

但是,假设空白消失了,那么做就相当简单了。您可以根据第二个文件的内容创建一个字典,将名称映射到代码

from csv import DictReader

city_codes = {}
for row in DictReader(open('file2.csv', 'rb')):
    city_codes[row['city']] = row['code']

for row in DictReader(open('file1.csv', 'rb')):
    print city_codes[row['city']]

当然,您可以根据需要将其发送到文本文件,只需像往常一样重定向打印输出。

除了Jeremy建议的方法外,还可以使用string方法.strip()自动删除尾随和前导空格。

考虑使用sqlite3。然后,您可以进行高效、简单和强大的连接。
如果文件真的很大,您可以从创建适当的索引中获益。

请告诉我们您尝试了什么。@robert我有点不好意思地说,我实际上做得不多,因为我在阅读CSVFile1并创建字典后立即陷入困境。我不知道如何从那里继续下去。我在网站上阅读了python手册,但没有找到我想要的内容。需要注意的是,DictReader最终会在所有行字典的键中包含空格。避免这种情况意味着在DictReader看到文件之前对其进行预处理,或者剥离每一行的键。不幸的是,它有点难看。是的,因为在我看来这是一个自然的数据库应用程序之前,我实际上已经使用过一些数据库。但是我还没有在python中使用DBs。这非常有效!但我不明白打开file2.csv后的
city\u code…
部分在做什么?
city\u code
字典旨在将城市名称映射到代码。该行添加一个新条目,其关键字为当前行的城市,其值为当前行的代码。我们可以稍后使用此条目查找给定城市名称的代码。