我有一个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)
但是如何将列表与列表的第一项合并?
答案 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]]