乍一看,我认为这是一个简单的问题,但我找不到一个正确的答案。
我有一本州名和缩写的字典,像这样;
{(' ak', ',ak', ', ak', 'juneau', ',alaska', ', alaska'): 'alaska',
(' al', ',al', ', al', 'montgomery', ',alabama', ', alabama'): 'alabama',
(' ar', ',ar', ', ar', 'little rock', ',arkansas', ', arkansas'): 'arkansas',
(' az', ',az', ', az', 'phoenix', ',arizona', ', arizona'): 'arizona',我试图绘制这本字典的各种情况,自我报告的Twitter位置,我有在熊猫的数据,以寻找部分匹配。例如,如果一个案例读为“anchorage,ak”,它就会将值更改为阿拉斯加。我可以看到,如果这是一个列表,这是相当简单的,但必须有另一种方法来做到这一点,而不循环。任何帮助都是非常感谢的!
发布于 2015-12-17 08:50:29
我认为timgeb在上面有正确的想法。我要补充两件事:
1)您还可以在处理之前从给定的大小写中删除所有空白--因此,不需要将' ak'、',ak'和', ak' all作为键包括在内--一个简单的'ak'键就足够了。
2)我不会重复字典中的状态值,而是从整数到状态(即{0: 'alaska, 1: 'alabama' ...} )创建一个额外的散列,并将相应的整数键存储在原始字典中。
因此,生成的字典应该如下所示:
A = {'ak': 0, 'juneau': 0, 'alaska': 0, 'al': 1, 'montgomery': 1, 'alabama': 1, ...}要从整数值中访问状态名称,您应该为所有50个状态创建另一个字典,如下所示:
B = {0: 'alaska', 1: 'alabama', ...}所以鉴于一个案子..。
case = 'anchorage,ak'
case_list = case.replace(' ', '').split(',') # remove all whitespace and split case by comma
for elem in case_list:
if elem in A:
# insert code to replace case with B[A[elem]]
breakhttps://stackoverflow.com/questions/34328702
复制相似问题