[英]Get Common Key values in Json Format Python
I have a list with following values where each value is dict;我有一个包含以下值的列表,其中每个值都是 dict; so basically its a list with values as dictionary
所以基本上它是一个值作为字典的列表
{'channel_key': 'AMZ', 'channel_desc': 'amazon UK', 'channel_value': [{'date': '2020-03-01', 'price': '10'}]}
{'channel_key': 'ebay_us', 'channel_desc': 'ebay US', 'channel_value': [{'date': '2020-03-01', 'price': '10'}]}
{'channel_key': 'tar', 'channel_desc': 'target', 'channel_value': [{'date': '2020-03-01', 'price': '10'}]}
{'channel_key': 'AMZ', 'channel_desc': 'amazon UK', 'channel_value': [{'date': '2020-03-02', 'price': '100'}]}
{'channel_key': 'ebay_us', 'channel_desc': 'ebay US', 'channel_value': [{'date': '2020-03-02', 'price': '30'}]}
{'channel_key': 'tar', 'channel_desc': 'target', 'channel_value': [{'date': '2020-03-02', 'price': '20'}]}
{'channel_key': 'alibaba', 'channel_desc': 'Alibaba', 'channel_value': [{'date': '2020-03-02', 'price': '30'}]}
What I am trying to do is if channel_key matches, then append channel_value field.我想做的是如果 channel_key 匹配,那么 append channel_value 字段。 For eg Channel_key 'AMZ' is present twice, so its channel_value will become as follows;
例如 Channel_key 'AMZ' 出现了两次,所以它的 channel_value 将变为如下;
'channel_value': [{'date': '2020-03-01', 'price': '10'},{'date': '2020-03-02', 'price': '100'}]
similary for tar.类似的焦油。
Expected Output will be something like this:预计 Output 将是这样的:
{'channel_key': 'AMZ', 'channel_desc': 'amazon UK', 'channel_value': [{'date': '2020-03-01', 'price': '10'},{'date': '2020-03-02', 'price': '100'}]}
{'channel_key': 'ebay_us', 'channel_desc': 'ebay US', 'channel_value': [{'date': '2020-03-01', 'price': '10'},{'date': '2020-03-02', 'price': '30'}]}
{'channel_key': 'tar', 'channel_desc': 'target', 'channel_value': [{'date': '2020-03-01', 'price': '10'},{'date': '2020-03-02', 'price': '20'}]}
{'channel_key': 'alibaba', 'channel_desc': 'Alibaba', 'channel_value': [{'date': '2020-03-02', 'price': '30'}]}
You can try the following code:您可以尝试以下代码:
def convert(t):
d = {}
for x in t:
channel_key = x['channel_key']
if channel_key in d:
d[channel_key]['channel_value'].extend(x['channel_value'])
else:
d[channel_key] = x
return list(d.values())
if __name__ == '__main__':
t = [
{'channel_key': 'AMZ', 'channel_desc': 'amazon UK', 'channel_value': [{'date': '2020-03-01', 'price': '10'}]},
{'channel_key': 'ebay_us', 'channel_desc': 'ebay US', 'channel_value': [{'date': '2020-03-01', 'price': '10'}]},
{'channel_key': 'tar', 'channel_desc': 'target', 'channel_value': [{'date': '2020-03-01', 'price': '10'}]},
{'channel_key': 'AMZ', 'channel_desc': 'amazon UK', 'channel_value': [{'date': '2020-03-02', 'price': '100'}]},
{'channel_key': 'ebay_us', 'channel_desc': 'ebay US', 'channel_value': [{'date': '2020-03-02', 'price': '30'}]},
{'channel_key': 'tar', 'channel_desc': 'target', 'channel_value': [{'date': '2020-03-02', 'price': '20'}]},
{'channel_key': 'alibaba', 'channel_desc': 'Alibaba', 'channel_value': [{'date': '2020-03-02', 'price': '30'}]}
]
converted_t = convert(t)
from pprint import pprint
pprint(converted_t)
which prints哪个打印
[{'channel_desc': 'amazon UK',
'channel_key': 'AMZ',
'channel_value': [{'date': '2020-03-01', 'price': '10'},
{'date': '2020-03-02', 'price': '100'}]},
{'channel_desc': 'ebay US',
'channel_key': 'ebay_us',
'channel_value': [{'date': '2020-03-01', 'price': '10'},
{'date': '2020-03-02', 'price': '30'}]},
{'channel_desc': 'target',
'channel_key': 'tar',
'channel_value': [{'date': '2020-03-01', 'price': '10'},
{'date': '2020-03-02', 'price': '20'}]},
{'channel_desc': 'Alibaba',
'channel_key': 'alibaba',
'channel_value': [{'date': '2020-03-02', 'price': '30'}]}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.