2016-06-28 2 views
0

ПочемуПечать словаря с печатью

d = {"A":10,"B":20} 
print(*d, sep=" ") 

Выход A B и не 10 20?

И как я могу получить 10 20?

+0

Это печатает ключи не ДИКТ ЗНАЧЕНИЯ – SAMO

+3

Обратите внимание, что '*' является ** Позиционная ** распаковке. Когда вы перебираете словарь, вы получаете ключи, а не значения, следовательно, результат. Используйте '* d.значения() '. BTW: порядок вывода не определен, поэтому не удивляйтесь, если значения будут отличаться от порядка, чем вы думали. – Bakuriu

+0

Возможный дубликат [получение ключа dict с использованием значения dict в python] (http://stackoverflow.com/questions/8251876/getting-dict-key-using-dict-value-in-python) – SAMO

ответ

2

просто написать

print (*d.values()) 
3

Предполагая, что вы хотите, чтобы напечатать ключи вместе со значениями вы можете использовать выражение генератора:

print(' '.join('{}={}'.format(k,v) for k,v in d.items())) 

или, если вы предпочитаете держать sep аргумент вместо использования str.join:

print(*('{}={}'.format(k,v) for k,v in d.items()),sep=' ') 

как с выходом:

A=10 B=20 
+0

Вопрос гласит: «Как мне получить« 10 20'? » Кажется, он не хочет ключей. – Barmar

+0

@Barmar Я согласен, что название довольно открыто (* печать словаря *), и может привести к тому, что другие пользователи наткнутся на эту страницу в поисках способа печати обоих ключей и значений. –

1

Пожалуйста см демку для внедрения печати:

>>> def demo(p, *args, **kwargs): 
...  print(args) 
...  print(kwargs) 
... 
>>> demo(0, 1, 2, 3, 4, callback='demo_callback') 
(1, 2, 3, 4) 
{'callback': 'demo_callback'} 
  1. Синтаксис * требует кортеж/список;

  2. Для синтаксиса ** необходим словарь; каждая пара ключ-значение в словаре становится аргументом ключевого слова.

печать (* объекты, Сентябрь =»», конец = '\ п', файл = sys.stdout, вровень = False)

печать объекты в текстовом файл поток, разделенный sep и с последующим завершением. sep, end и file, если они есть, должны быть указаны как аргументы ключевых слов.

Все аргументы без ключевого слова преобразуются в строки, такие как str(), и записываются в поток, разделенные sep и затем заканчиваются. Оба sep и end должны быть строками; они также могут быть None, что означает использование значений по умолчанию. Если объекты не заданы, print() будет просто писать конец.

Аргумент файла должен быть объектом с методом write (string); если он отсутствует или None, будет использоваться sys.stdout. Поскольку печатные аргументы преобразуются в текстовые строки, print() не может использоваться с объектами файла двоичного режима. Для этого вместо этого используйте file.write (...).

Независимо от того, является ли вывод буферизированным, обычно определяется файлом, но если аргумент ключевого слова flush равен true, поток принудительно очищается.

>>> print(d, sep=" ") 
{'B': 20, 'A': 10} 
>>> print(*d, sep=" ") 
B A 
>>> print(**d, sep=" ") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'B' is an invalid keyword argument for this function 

Это действительный путь:

>>> print(*d.values(), sep=" ") 
Смежные вопросы