【问题标题】:concatenate key value pairs from python dictionary连接python字典中的键值对
【发布时间】:2020-03-16 17:37:02
【问题描述】:

我有一本 Python 字典。键和值都是字符串。事实上,键是某种标志(如-f),值是选项(如20 之类的int)。我想要做的是创建一个包含所有键和值的字符串。 字典可能看起来像这样: {'-f': 20, '-d': 30} 我想要的是这样的: "-f 20 -d 30" 我认为这应该是一件容易的事,但直到现在我才找到解决方案......

【问题讨论】:

  • 值是字符串还是整数?
  • 这实际上可能不同
  • 您是否正在尝试生成命令行参数?
  • 是的。我不知道更好的方法...

标签: python dictionary hashtable


【解决方案1】:

这是使用列表推导的一种方法:

d = {'-f': 20, '-d': 30}
' '.join([i for k,v in d.items() for i in [k, str(v)]])
# '-f 20 -d 30'

相当于:

out = []
for k,v in d.items():
    for i in [k, str(v)]:
        out.append(i)

' '.join(out)
# '-f 20 -d 30'

【讨论】:

  • 这很好:) 非常感谢!!也许可以非常简要地解释这个 nesed list comprehension 的作用。我试图理解它,但无法理解它:(
  • 也许一个常规的 for 循环可以帮助你理解? @RobinKohrs :)
  • 帮了很多忙:) 非常感谢!!
  • @Robin 不要忘记您可以投票并接受答案。见What should I do when someone answers my question?,谢谢!
【解决方案2】:

您可以将str.joingenerator expression 一起使用:

d = {'-f': 20, '-d': 30}

' '.join(str(e) for t in d.items() for e in t)
# '-f 20 -d 30'

【讨论】:

    【解决方案3】:

    一次尝试:

    s = ''
    for k, v in dct.items(): 
        s += k + ' ' + str(v) + ' '
        # remove the last character, an unnecessary space
        s = s[:-1] 
    

    【讨论】:

    • 您可以进一步编辑它,这样您就不需要在 dict 中查找值来获取值,方法是使用 ... for k, v in dict.items(): k + " " + v + " "
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多