将两列转换为Python字典的简单方法
我想知道怎么把以下信息放进一个Python字典里,字典的键是国家名,值是两个字符的ISO代码。你可以在这个链接找到相关信息:http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html。
举个例子,我希望得到的结果是:
mapping_of_country_to_iso = {'AALAND ISLANDS':'AX','AFGHANISTAN':'AF',...}
相关问题:
3 个回答
0
如果我理解你的问题没错的话,我觉得 df.to_dict() 这个函数会对你很有帮助。
假设你的国家信息数据框叫做 df,首先(如果还没有的话),把 'Country' 设置为索引。接下来,使用 .to_dict() 函数。代码应该是这样的:
df = df.set_index('Country')
dict = df.to_dict('series')
'series' 只是组织字典的一种方式。我建议你去看看 pandas 的文档,了解一下 .to_dict(),因为这个命令有好几种用法。
3
如果你使用的是python2.7或更高版本,你可以使用字典推导式。
{k:v for k,v in list_of_tuples}
这里面的每个元组的格式是 ("AALAND ISLANDS", "AX")。这个方法比较通用,但可能在你的情况下并不需要。
对于旧版本的python,你可以直接用一个元组列表作为参数来调用字典构造函数。
dict(list_of_tuples)
这样你就能得到你想要的结果。
2
我只是把重要的数据复制粘贴到一个叫做'countries.txt'的文本文件里,然后做了类似这样的操作:
import string
myFilename = "countries.txt"
myTuples = []
myFile = open (myFilename, 'r')
for line in myFile.readlines():
splitLine = string.split (line)
code = splitLine [-3]
country = string.join(splitLine[:-3])
myTuples.append(tuple([country, code]))
myDict = dict(myTuples)
print myDict
这可能不是“最好”的方法,但看起来是有效的。
下面是根据约翰·马钦的建议做的:
import string
myFilename = "countries.txt"
myDict = {}
myFile = open (myFilename, 'r')
for line in myFile:
splitLine = string.split (line)
code = splitLine [-3]
country = " ".join(splitLine[:-3])
myDict[country] = code
print myDict