我有一个 Python 字典,我是从arcgis shapefile生成的。字典有key = FID(点ID):value =要么没有,要么是“HH”。字典看起来像这样:
Cluster_dict = {0: [u' '], 1: [u'HH'], 2: [u'HH'], 3: [u' '], 4: [u' '], 5: [u' '], 6: [u' '], 7: [u' '], 8: [u' '], 9: [u' '], 10: [u' '], 11: [u'HH'], 12: [u'HH'], 13: [u'HH'], 14: [u'HH'], 15: [u' '], 16: [u' '], 17: [u' '], 18: [u' '], 19: [u' '], 20: [u' '], 21: [u' '], 22: [u' '], 23: [u'HH'], 24: [u'HH'], 25: [u' '], 26: [u' '], 27: [u' '], 28: [u' ']....}
我使用以下代码从arcgis shapefile创建字典后,显示值[u'']和[u'HH']的额外字符:
arcpy.ClustersOutliers_stats('input_file', "GRID_CODE", 'output_file', "INVERSE_DISTANCE", "EUCLIDEAN_DISTANCE", "NONE", "", "")
Cluster_dict = {}
sc = arcpy.SearchCursor('output_file')
for row in sc:
Cluster_dict[row.FID] = [row.COType]
print Cluster_dict
我正在尝试使用此字典使用以下代码附加到每个点的8个(或更少)邻居的嵌套列表中:
clusterList = []
for clist in Neighbors_List:
row = []
for ccode in clist:
row.append(Cluster_dict[ccode])
clusterList.append(row)
print clusterList
但是当它到达row.append(Cluster_dict [ccode])时,我得到一个键错误'0'。我认为这是因为键0没有值,但我不确定。当我使用以下代码将所有[u'']替换为“None”时,字典不会替换空值。我正在使用以下代码来尝试替换[u'']。
for k, v in Cluster_dict.iteritems():
if v is [u' ']: #I've also tried '[u' ']'
Cluster_dict[k] = 'None'
print Cluster_dict
任何帮助将不胜感激。从字典中的所有值中删除[u'']会更容易吗?如果是这样,有人可以告诉我如何从词典中删除不需要的字符吗?
非常感谢您的帮助。
答案 0 :(得分:2)
您的for循环看起来不错,您可能希望使用==
代替is
来使其正常工作。在Python中,is
运算符比较两个对象的身份。
我似乎能够比较列表,与其中一条评论相反:
>>> a = [u' ']
>>> a is [u' ']
False
>>> a == [u' ']
True
答案 1 :(得分:2)
它没有做你想要的,而是使用==
。
此外,dict.get()
此外,'0' 不等于 0
答案 2 :(得分:2)
其他人告诉你在is
时使用==
有什么问题,但你可以通过添加一些代码来跳过整个循环:
for row in sc:
Cluster_dict[row.FID] = [row.COType] if row.COType != u' ' else None