我是 python 新手,我正在使用 python 2.7。我有两个具有相同键的字典。一本字典总是一样的。另一个可能没有第一个字典中的所有匹配键。我已经尝试了许多基于堆栈溢出中有关此主题的其他问题的变体。
我什至尝试使用以下代码进行测试。不起作用的部分是比较不同字典中的键。样本字典:
clubDict = {'001':'Alabama','066':'MountainWest','602':'The Auto Club Group'}
data = {'001':6021, ,'066':1134}
如您所见,数据字典中没有键 602。数据字典是在此代码中从一个 csv 文件构建的,该文件总共添加了多个数字。大部分代码在堆栈溢出中得到了回答。
当我没有 if, elifs 时,代码可以工作。然而,打印语句在打印时会给出不同的结果。这是对 data{} 中缺少键的处理。我添加了一个 if,else 来尝试使用 pass 比较键。还是没法比。所以我已经尝试了你现在看到的。
这是我的代码的一部分:
def getTotals():
result = defaultdict(int)
regexp = re.compile(r'(?:ttp_ws_sm|ttpv1)_(\d+)_')
with open(os.path.join(source, 'ttp_13_08.csv'), 'r') as f:
rows = csv.reader(f)
#adds total values for each club code (from csv file)
for row in rows:
match = regexp.search(row[1])
if match:
result[match.group(1)] += int(row[13])
for key, value in result.items():
data.update(result.items())
for value, key in clubDict.items():
#f = open(output_path + filename, 'a')
shared_keys = set(clubDict.keys()).union(data.keys())
if key not in data:
print "No counts avialable"
elif key not in clubDict:
print "Check for Club code"
elif data[key] == clubDict[key]:
print 'match'#, '{0}, {1}, {2}'.format(key, value, data[value])
else:
print '{0}, {1}, {2}'.format(key, value, data[value])
file.close
def main():
try:
getTotals()
except:
print "No more results"
结果不是我需要的。
这是期望的结果:
Alabama 001 6021
MountainWest 066 1134.
我在堆栈溢出中查看了许多 q/a,但似乎无法获得这些结果。我可能只是错误地搜索了我的问题。