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

时间:2018-10-18 17:16:04

标签: python json

我有一个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)

但是如何将列表与列表的第一项合并?

3 个答案:

答案 0 :(得分:2)

只需给出您要的内容即可:)

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

我希望有帮助。

答案 1 :(得分:1)

您可以枚举[HttpPost] public ActionResult Create(SpeakerConsent model) { // check model.Options // to do : return something } 字段项。
然后,将其与列表中的siteId一起压缩。

遍历zip并扩展每个rows(请注意,在扩展项目之前,应将其转换为列表)及其匹配的item

row

答案 2 :(得分: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]]