我是Python的初学者。
我有两个词典,每个键都是一个产品,每个值都是每个产品的价格。
productData_1
我想要做的是按键和值比较两个字典,以便我可以看到两个字典之间的差异,例如:有不同的价格,_2
或--seed
中缺少哪种产品?
我知道我必须以某种方式迭代这两个词,但我无法弄清楚如何去做。
答案 0 :(得分:0)
在Python 3.5中:
productData_1 = {'product_1': '18', 'product_2': '15', 'product_3': '10', 'product_4': '9'}
productData_2 = {'product_1': '18', 'product_3': '12', 'product_2': '15'}
keys = set (productData_1.keys () + productData_2.keys ())
for key in keys:
try:
if productData_1 [key] != productData_2 [key]:
print ('Mismatch at key {}'.format (key))
except:
print ('Entry missing at key {}'.format (key))
答案 1 :(得分:0)
for key in productData_1.keys()|productData_2.keys():
if key not in productData_1:
print('{} missing from productData_1!'.format(key))
continue
if key not in productData_2:
print('{} missing from productData_2!'.format(key))
continue
print('Difference in prices for key "{}": {}'.format(key,abs(int(productData_1[key])-int(productData_2[key]))))
如果任一dict中缺少某个键,则会打印此代码,并打印每个键的值之间的绝对差值。
productData_1.keys()|productData_2.keys()
将返回字典键的并集。
答案 2 :(得分:0)
keys_unique_to_1 = [key for key in productData_1 if key not in productData_2]
keys_unique_to_2 = [key for key in productData_2 if key not in productData_1]
common_keys = [key for key in productData_1 if key in productData_2]
diff = {key: int(productData_1[key]) - int(productData_2[key]) for key in common_keys}
print 'Keys unique to 1: ', keys_unique_to_1
# Keys unique to 1: ['product_4']
print 'Keys unique to 2: ', keys_unique_to_2
# Keys unique to 2: []
print 'Difference: ', diff
# Difference: {'product_1': 0, 'product_3': -2, 'product_2': 0}
答案 3 :(得分:0)
在这个问题上有一个很好的页面here。您可以遍历两个词典并比较它们的值。下面的示例显示了如何打印值相等的键。
=============================================== ==========================
productData_1 = {' product_1':' 18',' product_2':' 15',' product_3' :' 10',' product_4':' 9'} productData_2 = {' product_1':' 18',' product_3':' 12',' product_2':&# 39; 15'}
对于Python 2.x -
for key_1, value_1 in productData_1.iteritems():
for key_2, value_2 in productData_2.iteritems():
if value_1 == value_2:
print("key_1" + str(key_1))
print("key_2" + str(key_2))
对于Python 3.x -
for key_1, value_1 in productData_1.items():
for key_2, value_2 in productData_2.items():
if value_1 == value_2:
print("key_1" + str(key_1))
print("key_2" + str(key_2))
答案 4 :(得分:0)
name = None
level = 0
for event, element in etree.iterparse(gzip.GzipFile(f), events=('end', 'start' ), tag='label'):
# Update current level
if event == 'start': level += 1;
elif event == 'end': level -= 1;
# Get name for top level label
if level == 0:
name = element.xpath('name/text()')