[英]Print and join elements of a Json with Python
我有一个json,我需要创建一个列表列表,例如:
lista = [['334507', 'XXX', '334507', 36.07, 3985499.0],
['271018','YYY', '271007', 23.11, 1335150.0]]
all_sites = {
u'displayValue': {
u'siteId': {u'334507': u'XXX', u'271018': u'YYY'}
},
u'rows': [[u'334507', 36.07, 3985499.0],
[u'271018', 23.11, 1335150.0]],
u'alert': None,
u'columns': [u'siteId', u'revenue', u'paidImpressions'],
u'currency': u'USD'
}
我尝试过这样的事情:
sites = all_sites['displayValue']['siteId'].items()
sites_data = all_sites['rows']
data = []
for item in sites:
data.append(list(item))
for item in sites_data:
data.append(item)
但是如何将列表与列表的第一项合并?
只需给出您的要求:)
[[k,v]+all_sites['rows'][i] for i, (k,v) in enumerate(all_sites['displayValue']['siteId'].items())]
首先,迭代siteId:
>>> [t for t in all_sites['displayValue']['siteId'].items()]
[('334507', 'XXX'), ('271018', 'YYY')]
现在,您知道它将为您提供一个元组t,您可以将其替换为:
>>> [[k,v] for k,v in all_sites['displayValue']['siteId'].items()]
[['334507', 'XXX'], ['271018', 'YYY']]
现在,其他项位于“行”键中,但是您需要知道该行的索引。 知道每个(k,v)元组的索引的一种方法是:
>>> [[k,v]+[i] for i, (k,v) in enumerate(all_sites['displayValue']['siteId'].items())]
[['334507', 'XXX', 0], ['271018', 'YYY', 1]]
看到它合并了列表[k,v]与列表[i]。 现在,您要做的就是获取每个索引感兴趣的行:
>>> [[k,v]+all_sites['rows'][i] for i, (k,v) in enumerate(all_sites['displayValue']['siteId'].items())]
[['334507', 'XXX', '334507', 36.07, 3985499.0],
['271018', 'YYY', '271018', 23.11, 1335150.0]]
希望对您有所帮助。
您可以枚举siteId
字段项。
然后将其与rows
字段中的列表一起压缩。
遍历zip并扩展每个item
(请注意,在扩展项目之前,应将其转换为列表)及其匹配的row
。
siteid_items = json_['displayValue']['siteId'].items()
rows = json_["rows"]
result = list(
list(item) + row
for item, row in zip(siteid_items, rows)
)
print(result)
'''
stdout:
[['334507', 'XXX', '334507', 36.07, 3985499.0],
['271018', 'YYY', '271018', 23.11, 1335150.0]]
'''
以下示例可能会对您有所帮助。
json_ = {u'displayValue': {u'siteId': {u'334507': u'XXX', u'271018': u'YYY'}},
u'rows': [[u'334507', 36.07, 3985499.0], [u'271007', 23.11, 1335150.0]],
u'alert': None,
u'columns': [u'siteId', u'revenue', u'paidImpressions'],
u'currency': u'USD'}
result = []
count = len(json_["displayValue"]["siteId"])
for element in range(count):
item = list(json_["displayValue"]["siteId"].items()[element])+json_["rows"][element]
result.append(item)
print result
输出:
[[u'334507', u'XXX', u'334507', 36.07, 3985499.0], [u'271018', u'YYY', u'271007', 23.11, 1335150.0]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.