用于连接字典的键和值的Pythonic语法

时间:2014-02-07 08:59:56

标签: python dictionary

我有一本与此类似的词典

dic1 = {'Name': 'John', 'Time': 'morning'}

我想用" _"来连接键和值。具有以下模式的分隔符:

Name_John_Time_morning

这相当于key1_value1_key2_value2

我尝试过以下代码但没有成功

x + "_" + v for x,v in dict1.keys(), dict1.values()

4 个答案:

答案 0 :(得分:4)

mapstr.join一起使用:

>>> dic1 = {'Name': 'John', 'Time': 'morning'}
>>> '_'.join(map('_'.join, dic1.items()))
'Name_John_Time_morning'

或使用生成器表达式而不是map

>>> '_'.join('_'.join(item) for item in dic1.items())
'Name_John_Time_morning'

BTW,dict未订购。所以结果可能会有所不同。

答案 1 :(得分:3)

我更喜欢理解

result = '_'.join(x + '_' + y for x, y in dic1.items())

result = '_'.join('{}_{}'.format(*p) for p in dic1.items())

当存在非字符串键或值时,后一种形式也有效。

确保输出已排序,

result = '_'.join('{}_{}'.format(*p) for p in sorted(dic1.items()))

答案 2 :(得分:1)

 print "_".join("{}_{}".format(k,v) for k,v in dic1.items())

给出:

Name_John_Time_morning

答案 3 :(得分:0)

如果我们正在打高尔夫球,而且我有迭代球......

'_'.join(chain(*dic1.items()))