如何在串联中将dict转换为字符串?

时间:2019-09-09 10:01:52

标签: python json dictionary merge

我有从返回低于结果的API调用生成的python字典类

{'url':'https://propertypro.zendesk.com/api/v2/tickets/4249.json', 'id':4249, 'external_id':无}

{'url':'https://propertypro.zendesk.com/api/v2/tickets/4089.json', 'id':4089, 'external_id':无}

以下代码;

from urllib.parse import urlencode

import requests

credentials = 'some email', 'some password'
session = requests.Session()
session.auth = credentials

params = {
    'query': 'type:ticket tags:test_python',
    'sort_order': 'asc'
}

url = 'https://propertypro.zendesk.com/api/v2/search.json?' + urlencode(params)
response = session.get(url)
if response.status_code != 200:
    print('Status:', response.status_code,
          'Problem with the request. Exiting.')
    exit()

# Print the subject of each ticket in the results
data = response.json()

我迭代数据以获取键'id'中的所有值,并以逗号分隔的形式将其分配给变量id_merged作为字符串

for result in data['results']:
    # Ticket to update
    id_merged = (result['id'])

但是只能得到一个结果而不是2,var在循环中被覆盖了吗?

from test_search import data
import json
import requests

# Iterate the search result
for result in data['results']:
    # Ticket to update
    id_merged = (result['id'])

print("**Start**")
print(id)
body = 'Test ticket'

# Package the data in a dictionary matching the expected JSON
data_comment = {'ticket': {'comment': {'body': body}}}

# Encode the data to create a JSON payload
payload = json.dumps(data_comment)

# Set the request parameters
url = 'https://propertypro.zendesk.com/api/v2/tickets/update_many.json?' + \
    'ids=' + str(id_merged)
user = 'some email'
pwd = 'some password'
headers = {'content-type': 'application/json'}

# Do the HTTP put request
response = requests.put(url, data=payload,
                        auth=(user, pwd), headers=headers)

# Check for HTTP codes other than 200
if response.status_code != 200:
    print('Status:', response.status_code,
          'Problem with the request. Exiting.')
    exit()

# Report success
print('Successfully added comment to ticket #{}'.format(id))

我想要一个类似'https://propertypro.zendesk.com/api/v2/tickets/update_many.json?' + \ 'ids=' + 4249,4089的结果。

我怎么得到这个?

2 个答案:

答案 0 :(得分:0)

如果要将id的值转换为逗号分隔的字符串,则可以执行以下操作。

','.join(id.values())

因此将代码更改为

url = 'str,' + 'str1:' + ','.join(id.values())

出于完整性考虑,如果您想对字典键进行相同的操作,则只需使用

','.join(id)

答案 1 :(得分:0)

看起来您正在获取字典值的列表列表,在这种情况下,您可以将列表展平并加入字符串“,”,例如:

>>> import itertools
>>> ",".join(map(str, list(itertools.chain(*[[1,2,3],[4,5]]))))
'1,2,3,4,5'