Python: конвертировать одну пару значений ключа в строку в словаре - PullRequest
0 голосов
/ 07 мая 2018

У меня есть функция, которая преобразует запрос в словарь, который содержит список словарей. Есть ли простой способ заменить только одну из пар данных ключей на строку?

Моя функция:

def logs(query):
  client = gcb.Client()
  query_job = client.query(query)
  CSV_COLUMNS ='end_time,device,device_os,device_os_version,latency,megacycles,cost,device_brand,device_family,browser_version,app,ua_parse,key'.split(',')

  ret = {'instances': []}  
  for rows in query_job.result():
    var = list(rows)
    l1 = dict(zip(CSV_COLUMNS,var))
    ret['instances'].append(l1)
  return ret

Который затем производит этот словарь:

{'instances': [{'app': u'565',
                'browser_version': u'11.0',
                'cost': u'1.3075e-08',
                'device': u'0',
                'device_brand': u'0',
                'device_family': u'Other',
                'device_os': u'Windows 7',
                'device_os_version': u'0',
                'end_time': u'2018-04-17',
                'key': 1,
                'latency': 0.189589,
                'megacycles': 112.0,
                'ua_parse': u'0'},
               {'app': u'565',
                'browser_version': u'65.0.3325',
                'cost': u'1.3075e-08',
                'device': u'0',
                'device_brand': u'0',
                'device_family': u'Other',
                'device_os': u'Windows 10',
                'device_os_version': u'0',
                'end_time': u'2018-04-16',
                'key': 2,
                'latency': 0.131523,
                'megacycles': 190.0,
                'ua_parse': u'0'}]}

Мне нужно сделать пару ключей 'key' строкой. Так что key':2 должно быть 'key':'2'

Я попробовал это, но он просто сделал строки всех типов данных "

def logs(query):
  client = gcb.Client()
  query_job = client.query(query)
  CSV_COLUMNS ='end_time,device,device_os,device_os_version,latency,megacycles,cost,device_brand,device_family,browser_version,app,ua_parse,key'.split(',')

  ret = {'instances': []}  
  for rows in query_job.result():
    var = list(rows)
    l1 = dict(zip(CSV_COLUMNS,var))
    l1.update({str(k):str(v) for k,v in l1.items()})
    ret['instances'].append(l1)
  return ret

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете проверить ключ, если это желаемое значение. Достаточно небольшого улучшения в вашем коде:

l1.update({str(k): str(v) if k == 'key' else v for k, v in l1.items()})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...