-1
我遇到了匹配两个字典列表的问题。在我试图匹配的代码下面。如何将字典列表与其他字典值列表中的键值不同的地方匹配?
listDict1= [
'{"weightMax":150, "weightMin":100, "date":"2017-07-05 12:16:06"}',
'{"weightMax":150, "weightMin":100, "date":"2017-07-05 12:17:06"}',
'{"weightMax":0, "weightMin":0, "date":"0"}']
listDict2= [
'{"Weight":"138.0","unit":"Kg",
"measurementTime":"2017-07-05 12:15:06",
"receiptTime":"2017-06-30T15:16:09.009-07:00",
"date":1498860969000,"model":"2011",
"manufacturer":"CONTINUA","serialnumber":"SN_WEIGHT082"}',
'{"Weight":"138.0","unit":"Kg",
"measurementTime":"2017-07-05 12:16:06",
"receiptTime":"2017-06-30T15:16:09.009-07:00",
"date":1498860969000,"model":"2011",
"manufacturer":"CONTINUA","serialnumber":"SN_WEIGHT082"}',
'{"Weight":"188.0","unit":"Kg",
"measurementTime":"2017-07-05 12:17:06",
"receiptTime":"2017-06-30T15:16:09.009-07:00",
"date":1498860969000,"model":"2011",
"manufacturer":"CONTINUA","serialnumber":"SN_WEIGHT082"}']
我需要与listDict2 [ 'measurementTime']
我尝试下面的代码匹配listDict1 [ '日期']的值,但它按照列表索引
def matchValValues(listDict1, listDict2):
val1 = []
rpm = []
for i in range(len(listDict1)):
j = dict((k, v) for k, v in ast.literal_eval(listDict1[i]).iteritems())
k = dict((k, v) for k, v in ast.literal_eval(listDict2[i]).iteritems())
#for i in j.keys():
val = j['date']
we = k['measurementTime']
if val in we :
val2 = float(k['Weight'])
max= float(j['weightMax'])
min = float(j['weightMin'])
print "True"
if val2 <= max and val2 >= min:
print "pass"
val1.append(str(j['weightMax'])+'|'+str(j['weightMin']))
rpm.append(k['Weight'])
else:
val1.append(j.copy())
rpm.append(k.copy())
else:
val1.append(j.copy())
rpm.append(k.copy())
print val1
print rpm
匹配预期的输出: 如果有一个匹配只附加重量和测量时间值,以rpm为单位 如果有一个匹配,只在val1中附加weightmax,weightmin和date值 否则以rpm和val附加整个不匹配的字典1对应。
电流输出:
[{'date': '2017-07-05 12:16:06', 'weightMax': 150, 'weightMin': 100},
{'date': '2017-07-05 12:17:06', 'weightMax': 150, 'weightMin': 100},
{'date': '0', 'weightMax': 0, 'weightMin': 0}]
[{'Weight': '138.0', 'measurementTime': '2017-07-05 12:15:06',
'serialnumber': 'SN_WEIGHT082', 'date': 1498860969000L,
'model': '2011', 'receiptTime': '2017-06-30T15:16:09.009-07:00',
'unit': 'Kg', 'manufacturer': 'CONTINUA'},
{'Weight': '138.0', 'measurementTime': '2017-07-05 12:15:06',
'serialnumber': 'SN_WEIGHT082', 'date': 1498860969000L,
'model': '2011', 'receiptTime': '2017-06-30T15:16:09.009-07:00',
'unit': 'Kg', 'manufacturer': 'CONTINUA'},
{'Weight': '188.0', 'measurementTime': '2017-07-05 12:16:06',
'serialnumber': 'SN_WEIGHT082', 'date': 1498860969000L,
'model': '2011', 'receiptTime': '2017-06-30T15:16:09.009-07:00',
'unit': 'Kg', 'manufacturer': 'CONTINUA'}]
你能告诉我该怎么做吗?我试图弄清楚。 –
什么部分给你带来麻烦?这有几个步骤,而SO不是代码编写或教程服务。您的代码显示您知道如何从字典条目中提取值。在列表中搜索一个值是'index'方法。 'Reverse dictionary'是一个简单的浏览器搜索。 – Prune