繁体   English   中英

使用Python打印和联接Json的元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM