如何根据列表中的字典分配多个变量(列表排序不同 运行)
How to assign multiple variables based on dicts in a list (The list is sorted different each run)
假设我有这个数据:
data = [{'name': "Name 1", 'value': None}, {'name': "Name 2", 'value': None}, {'name': "Name 3", 'value': None}]
假设每次代码为 运行,我如何根据此数据分配三个变量,dicts 可能会被打乱。这意味着“名称 1”可能会在索引 0、1 或 2 中找到。
我试过这个:
for x in data:
if x['name'] == 'Name 1':
a = x['value']
continue
if x['name'] == 'Name 2':
b = x['value']
continue
if x['name'] == 'Name 3':
c = x['value']
continue
但我觉得这很丑陋。有没有更好、更 Pythonic 的方式?
a, b, c = ??
您可以将 data
列表转换为临时字典,其中键是名称。例如:
data = [
{"name": "Name 1", "value": None},
{"name": "Name 2", "value": None},
{"name": "Name 3", "value": None},
]
tmp = {d["name"]: d["value"] for d in data}
a, b, c = tmp.get("Name 1"), tmp.get("Name 2"), tmp.get("Name 3")
print(a, b, c)
打印:
None None None
假设我有这个数据:
data = [{'name': "Name 1", 'value': None}, {'name': "Name 2", 'value': None}, {'name': "Name 3", 'value': None}]
假设每次代码为 运行,我如何根据此数据分配三个变量,dicts 可能会被打乱。这意味着“名称 1”可能会在索引 0、1 或 2 中找到。
我试过这个:
for x in data:
if x['name'] == 'Name 1':
a = x['value']
continue
if x['name'] == 'Name 2':
b = x['value']
continue
if x['name'] == 'Name 3':
c = x['value']
continue
但我觉得这很丑陋。有没有更好、更 Pythonic 的方式?
a, b, c = ??
您可以将 data
列表转换为临时字典,其中键是名称。例如:
data = [
{"name": "Name 1", "value": None},
{"name": "Name 2", "value": None},
{"name": "Name 3", "value": None},
]
tmp = {d["name"]: d["value"] for d in data}
a, b, c = tmp.get("Name 1"), tmp.get("Name 2"), tmp.get("Name 3")
print(a, b, c)
打印:
None None None