![](/img/trans.png)
[英]Get intersection of 4 JSON files based on 1-2 common key values? (Python)
[英]Get Common Key values in Json Format Python
我有一個包含以下值的列表,其中每個值都是 dict; 所以基本上它是一個值作為字典的列表
{'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'}]}
我想做的是如果 channel_key 匹配,那么 append channel_value 字段。 例如 Channel_key 'AMZ' 出現了兩次,所以它的 channel_value 將變為如下;
'channel_value': [{'date': '2020-03-01', 'price': '10'},{'date': '2020-03-02', 'price': '100'}]
類似的焦油。
預計 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'}]}
您可以嘗試以下代碼:
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)
哪個打印
[{'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.