我在下面有一本字典
dict1 = {'index': 88260', 'host': 'digital.net', 'source': '11-02.txt', '_time': '2018 9:00 EDT', 'count': '1'}
这是重建新词典的一种方法吗?
{
"name1": {
"index": "88260",
"host": "digitalnet"
},
"time": '2018 9:00 EDT',
"name2": {
"source": '11-02.txt'
},
"metricName": "test 1",
"count_value": 1,
"metricType": "count"
}
到目前为止,我只能得到name1部分,即
d1_items = list(dict1.items())
dic2={"name1":{k: v for k, v in d1_items[0:2]}}
下一步将是什么?
答案 0 :(得分:0)
如果我正确理解了您的数据,由于新字典包含的原始字典中不存在的键,因此除了为每个键值对手动构建新字典外,我不确定是否还有更好的方法。
如果我误解了一些东西,请发表评论,否则...
我唯一真正添加的是对df.groupby(lambda x: {'Y': 'X'}.get(x, x), axis=1).first()
0 X
0 1 6
1 2 7
2 3 1
3 4 5
列表进行排序,因为字典不是按设计排序的,因此确保我们获得正确的键值对的唯一方法是首先对数据进行排序:
d1_items
新字典dict1 = {'index': '88260',
'host': 'digital.net',
'source': '11-02.txt',
'_time': '2018 9:00 EDT',
'count': '1'}
new_keys = ['name1', 'time', 'name2', 'metricName', 'count_value', 'metricType']
d1_items = sorted(dict1.items())
d2 = {}
d2[new_keys[0]] = {k:v for k, v in d1_items[2:4]}
d2[new_keys[1]] = d1_items[0][1]
d2[new_keys[2]] = {d1_items[4][0]: d1_items[4][1]}
d2[new_keys[3]] = 'test 1'
d2[new_keys[4]] = int(d1_items[1][1])
d2[new_keys[5]] = d1_items[1][0]
已创建,现在让我们看一下它:
d2
看起来很有希望,让我们检查一下它是否与我们期望的字典结果匹配。
>>> import pprint
>>> pprint.pprint(d2)
{'count_value': 1,
'metricName': 'test 1',
'metricType': 'count',
'name1': {'host': 'digital.net', 'index': '88260'},
'name2': {'source': '11-02.txt'},
'time': '2018 9:00 EDT'}