使用 for 循环将键和值添加到空字典

时间:2021-01-28 21:21:44

标签: python dictionary

我目前有 3 个列表和一个空字典:

dict = {}

name = ['Bob', 'Amy', 'Jack']
gender = ['Male', 'Female', 'Male']
car = ['kia', 'ford', 'audi']
country = ['UK', 'US', 'Australia']

我可以使用 for 循环来创建字典条目吗?所以理想情况下我会得到:

dict = {'Bob': {'gender':'Male', 'car':'kia', 'country':'UK'},
        'Amy': {'gender':'Female', 'car':'ford', 'country':'US'},
        'Jack': {'gender':'Male', 'car':'audi', 'country':'Australia'}}

2 个答案:

答案 0 :(得分:2)

您可以使用 zipdict comprehension

awk '
    /^WORD1/ {
        match($0,/[ ]0x[^ ]+/)
        if (RLENGTH > -1)
            print substr ($0, RSTART+1, RLENGTH)
    }
' file
0xksjdflksjflksjf
0xksjdflksjflks

输出:

name = ['Bob', 'Amy', 'Jack']
gender = ['Male', 'Female', 'Male']
car = ['kia', 'ford', 'audi']
country = ['UK', 'US', 'Australia']

db = {name: dict(zip(['gender', 'car', 'country'], rest)) 
            for name, *rest 
            in zip(name, gender, car, country)
     }
print(db)

解压后的样子:

{'Bob': {'gender': 'Male', 'car': 'kia', 'country': 'UK'},
 'Amy': {'gender': 'Female', 'car': 'ford', 'country': 'US'},
 'Jack': {'gender': 'Male', 'car': 'audi', 'country': 'Australia'}}

如果我们看到 for data in zip(name, gender, car, country): n, g, ca, co = data db[n] = { 'gender' : g, 'car' : ca, 'country': co } 返回的内容:

zip

现在,我们可以解包这些元组(参见iterable unpacking

>>> for data in zip(name, gender, car, country):
        print(data)

('Bob', 'Male', 'kia', 'UK')
('Amy', 'Female', 'ford', 'US')
('Jack', 'Male', 'audi', 'Australia')

现在,让我们来看看如何通过调用 dict 来制作 dict:

>>> n, g, ca, co = ('Bob', 'Male', 'kia', 'UK')
>>> n
'Bob'
>>> g
'Male'
>>> ca
'kia'
>>> co
'UK'

# Or we can take the name separately (as shown in dict comprehension):
>>> name, *rest = ('Bob', 'Male', 'kia', 'UK')
>>> name
'Bob'
>>> rest
['Male', 'kia', 'UK']

答案 1 :(得分:0)

使用 zipdictionary comprehension


dct = {n: {'gender': g, 'car': k, 'country': c}
       for n, g, k, c in zip(name, gender, car, country)}

作为旁注,避免使用 Python 中的内置名称命名变量,例如 dict(我使用的是 dct,但更好的名称可能是 people 或者,甚至更好的是,您可以想到适合您实际用例的东西)。