gpt4 book ai didi

python - LEFT JOIN python中基于值的字典

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:42 27 4
gpt4 key购买 nike

#Input
dict_1 = {"conn": {"ts":15,"uid":"ABC","orig_h":"10.10.210.250"}}
dict_2 = {"conn": {"ts":15,"uid":"ABC","orig_h":"10.10.210.252"}}

#Mapper can be modified as required
mapper = {"10.10.210.250":"black","192.168.2.1":"black"}

我在一个循环中获取每个字典,在每次迭代中,我需要根据映射器检查一个字典,并根据 dict_1.orig_hmapper.10.10 之间的匹配附加一个标志。 210.250 。我可以根据需要灵活地定义映射器。

所以期望的结果是:

dict_1 = {"conn": {"ts":15,"uid":"ABC","orig_h":"10.10.210.250", "class":"black"}}

dict_2 将保持不变,因为 mapper 中没有匹配值。

这有点像我想要的,但只有当 orig_hint

时它才有效
import collections
result = collections.defaultdict(dict)
for d in dict_1:
result[d[int('orig_h')]].update(d)
for d in mapper:
result[d[int('orig_h')]].update(d)

最佳答案

没有太多解释要做;如果 ip 在映射器字典中(如果 mapper 有一个键是那个 ip)然后设置 dict 的所需属性到 mapper 中键的值字典(此处为 'black')。

def update_dict(dic, mapper):
ip = dic['conn']['orig_h']
if ip in mapper:
dic['conn']['class'] = mapper[ip]

完全按照预期工作:

>>> update_dict(dict_1, mapper)
>>> dict_1
{'conn': {'ts': 15, 'uid': 'ABC', 'orig_h': '10.10.210.250', 'class': 'black'}}
>>> update_dict(dict_2, mapper)
>>> dict_2
{'conn': {'ts': 15, 'uid': 'ABC', 'orig_h': '10.10.210.252'}}

关于python - LEFT JOIN python中基于值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52074701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com