我目前有 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'}}
答案 0 :(得分:2)
您可以使用 zip
和 dict 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)
使用 zip
和 dictionary comprehension:
dct = {n: {'gender': g, 'car': k, 'country': c}
for n, g, k, c in zip(name, gender, car, country)}
作为旁注,避免使用 Python 中的内置名称命名变量,例如 dict
(我使用的是 dct
,但更好的名称可能是 people
或者,甚至更好的是,您可以想到适合您实际用例的东西)。