通过迭代字典来创建列表

His*_*shi 4 python dictionary loops list

我定义了这样的字典(list是整数列表):

my_dictionary = {'list_name' : list, 'another_list_name': another_list}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过迭代这个字典来创建一个新列表.最后,我希望它看起来像这样:

my_list = [list_name_list_item1, list_name_list_item2, 
                list_name_list_item3, another_list_name_another_list_item1]
Run Code Online (Sandbox Code Playgroud)

等等.

所以我的问题是:我怎么能意识到这一点?

我试过了

for key in my_dictionary.keys():
    k = my_dictionary[key]
    for value in my_dictionary.values():
        v = my_dictionary[value]
        v = str(v)
        my_list.append(k + '_' + v)
Run Code Online (Sandbox Code Playgroud)

但是,在此示例的第4行中,我收到了类型错误(不可用类型:'list'),而不是所需的输出.

Jea*_*bre 5

你试图通过它的价值得到一个字典项,而你已经拥有了你的价值.

使用列表解析在一行中完成:

my_dictionary = {'list_name' : [1,4,5], 'another_list_name': [6,7,8]}

my_list = [k+"_"+str(v) for k,lv in my_dictionary.items() for v in lv]

print(my_list)
Run Code Online (Sandbox Code Playgroud)

结果:

['another_list_name_6', 'another_list_name_7', 'another_list_name_8', 'list_name_1', 'list_name_4', 'list_name_5']
Run Code Online (Sandbox Code Playgroud)

请注意,由于无法保证字典中的顺序,因此列表的顺序也不是.您可以通过按键对项目进行排序来修复订单:

my_list = [k+"_"+str(v) for k,lv in sorted(my_dictionary.items()) for v in lv]
Run Code Online (Sandbox Code Playgroud)